Как matplotlib.image.imread () отличается от cv2.imread () при чтении изображения RGB? [Дубликат]

Если метод equals() присутствует в классе java.lang.Object, и ожидается, что он проверяет эквивалентность состояния объектов! Это означает, что содержимое объектов. В то время как ожидается, что оператор == проверяет, что фактические экземпляры объекта одинаковы или нет.

Пример

Рассмотрим две различные ссылочные переменные, str1 и str2:

str1 = new String("abc");
str2 = new String("abc");

Если вы используете equals()

System.out.println((str1.equals(str2))?"TRUE":"FALSE");

, вы получите выход как TRUE, если вы используете ==.

System.out.println((str1==str2) ? "TRUE" : "FALSE");

Теперь вы получите вывод FALSE в качестве вывода, потому что оба str1 и str2 указывают на два разных объекта, хотя оба они имеют одинаковое строковое содержимое. Именно из-за new String() каждый новый объект создается каждый раз.

25
задан svec 10 November 2017 в 04:36
поделиться

1 ответ

OpenCV использует BGR как свой порядок цветов по умолчанию для изображений, matplotlib использует RGB. Когда вы показываете изображение, загруженное с помощью OpenCv в matplotlib, каналы будут возвращаться на передний план.

Самый простой способ исправить это - использовать OpenCV для явного преобразования его обратно в RGB, как и при создании изображения в оттенках серого.

RGB_img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

И затем используйте это в ваш сюжет.

52
ответ дан eyllanesc 16 August 2018 в 00:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: