OpenCV2.3 imwrite сохраняет черное изображение - PullRequest
2 голосов
/ 18 сентября 2011

Я пытаюсь сохранить изображение JPEG на диск с помощью imwrite, кажется, что я что-то упустил. Я всегда получаю черное изображение размером около 4 КБ. Что я здесь не так делаю? Изображение, которое я вижу, выглядит нормально, но когда оно попадает на диск, оно полностью черное.

std::vector<int> qualityType(1);
qualityType.push_back(CV_IMWRITE_JPEG_QUALITY);
cv::imwrite("Final.jpg",image,qualityType);

enter image description here

Ответы [ 3 ]

3 голосов
/ 18 сентября 2011

Следующий код работает для меня на 8-битных (1 и 3-канальных) изображениях:

std::vector<int> qualityType;
qualityType.push_back(CV_IMWRITE_JPEG_QUALITY);
qualityType.push_back(90);
cv::imwrite("Final.jpg",image,qualityType);

В вашем коде qualityType инициализирован неправильно.Ваш вектор содержит 2 значения

{<some unknown number>, CV_IMWRITE_JPEG_QUALITY}

, но должно быть

{CV_IMWRITE_JPEG_QUALITY, <desired quality value>}
2 голосов
/ 02 февраля 2016

Печать отпечатков в масштабе от 0 до 255, но ваше изображение в масштабе от 0 до 1.Чтобы увеличить масштаб, используйте эту строку:

image.convertTo (image, CV_8UC3, 255.0);

0 голосов
/ 18 сентября 2011

Мне нужно было только преобразовать его в 16-битное изображение

image.convertTo(image,CV_16UC3,255,255);

согласно документу, 8 или 16-битные изображения могут быть сохранены.

...