#python #opencv
#python #opencv
Вопрос:
cv2.imread(JPG_IMAGE_PATH)
выдает разные массивы на Mac и Linux.
Это может быть из-за причины, описанной здесь (см. Примечание).
Есть ли какое-либо решение для получения одинаковых массивов на Mac и Linux?
Комментарии:
1. Вероятно, лучший совет — избегать форматов с потерями.
2. Вы всегда можете попробовать разные библиотеки для чтения. Например , imageio или любая библиотека, упомянутая для ввода-вывода в scikit-image . К сожалению, я не могу гарантировать, что они будут вести себя одинаково в каждой ОС. Предупреждение в документах сведет меня с ума. Это не то, что я ожидал от такого распространенного формата изображения. Другой подход: используйте imagemagick для декодирования jpeg в некоторый формат без потерь, например png, затем продолжайте. Или, может быть, даже лучше: используйте официальный jpeg-декодер для создания некоторого промежуточного bmp.
3. @sascha skimage.io.imread() дал тот же результат на Mac и Ubuntu. Но я пока не знаю, работает ли это для каких-либо изображений или нет.
Ответ №1:
вы можете создавать opencv и libjpg из исходного кода как в Linux, так и в Mac. Используя cmake, вы можете создавать opencv с поддержкой libjpg (из исходного кода). Надеюсь, это даст вам тот же результат.
cmake -DWITH_JPEG=ON -DBUILD_JPEG=OFF -DJPEG_INCLUDE_DIR=/path/to/libjepeg-turbo/include/ -DJPEG_LIBRARY=/path/to/libjpeg-turbo/lib/libjpeg.a /path/to/OpenCV
Один из источников libjpg: ссылка
В настоящее время он дает другой результат из-за разной версии libjpg в этих ОС.