2013-03-08 3 views
1

Я получаю кадр из видео AVI и открываю цветное изображение по Matlab и проверяю значение пикселя трех каналов R, G, B. (case 1)Разница значений пикселей в изображении между Matlab и Opencv

После этого я использую opencv2.4.3 для получения кадра и сохранения значения пикселя по txt-файлу. Затем я проверяю txt-файл, я понимаю, что значение пикселя отличается от Matlab (я знаю, что цветное изображение, открытое opencv, является BGR, а положение индекса пикселя должно быть минус 1 (в Matlab, положение пикселя (x, y) .In c , пиксель (x-1, y-1))). (case 2)

Наконец, я использую opencv для сохранения кадра с помощью функции cvSaveImage, а затем я открываю этот кадр с помощью Matlab. В этом случае значение пикселя также отличается от значения в двух случаях.

Почему это происходит?

Благодарим вас за ответ! Извините за мой английский!

Это мой код http://www.scribd.com/doc/129263549/Code (вы должны загрузить его читать)

+2

Я предполагаю, что вы пробовали формат jpeg, который по умолчанию является убыточным. Попробуйте формат без потерь; он должен быть таким же. –

+0

Третий случай не имеет значения. Но в первом случае и во втором случае я получаю кадр из изображения avi и данных процесса напрямую. В opencv я использую cvCaptureFromAVI и cvQueryFrame, чтобы получить значение проверки кадра В Matlab я использую VideoReader и читаю, чтобы получить кадр, а затем imshow, чтобы проверить значение. И два значения разные! –

+0

Пожалуйста, включите в вопрос соответствующие части вашего кода, вместо ссылки на какой-либо загружаемый сайт, требующий регистрации. – Junuxx

ответ

1

Matlab и OpenCV имеют различные способы хранения значений пикселей. Matlab использует сжатие для сохранения изображений .jpeg перед их сохранением. Поэтому, если вы просматриваете пиксельные данные для похожих изображений в Matlab и OpenCV, это будет выглядеть по-другому.

Если вы загружаете и сохраняете одинаковое исходное изображение как в Matlab, так и в OpenCV, первый будет меньшим размером, чем позже; даже если вы не делаете никаких операций с изображением.

Вы не можете заставить оба изображения данных выглядеть одинаково. К счастью, никакие операции, выполняемые на изображении, не зависят от этой разницы во внутренней структуре. Например, если вы попытаетесь найти индексы определенных пикселей в Matlab и OpenCV, оба будут давать правильные значения, хотя значения не будут выглядеть одинаково.

Смежные вопросы