2015-10-16 3 views
0

Выполняется ли imwrite, когда значения пикселей имеют тип CV_32FC1. Я пытаюсь написать изображение в JPG файл, но это не трудоспособное:Когда выполняется imwrite()

 make_response_mat(hr_lrt,response); 

     if (!response.data)        // Checks input 
     { 
      cout << "Could not open or find the image" << std::endl; 
      return -1; 
     } 
     while (!imwrite("response.jpg", response)) 
     { 
      cout << "Hari" << response.size() << "\n" << response.at<float>(456954, 4); 
     } 

Здесь ответ имеет значение пикселя типа поплавка.

+3

только 8 бит или 16 бит изображения могут быть записаны с помощью [ 'imwrite'] (http://docs.opencv.org/modules/highgui/doc/reading_and_writing_images_and_video.html#imwrite) , – sgarizvi

+0

предоставить больше кода и деталей, если возможно –

ответ

0

Только 8-разрядный (или 16-разрядный без знака (CV_16U) в случае PNG, JPEG 2000 и TIFF) одноканальный или 3-канальный (с порядком канала BGR). Вы можете использовать Mat :: convertTo для преобразования типа данных изображения. , например. Mat res;
response.convertTo(res, CV_8UC*)
* refer to image channel(1, 2, 3)

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