Я пытаюсь сохранить изображение после обработки, но, к сожалению, я получаю исключение. Он запускает все строки, кроме команды imwrite
(последняя команда в коде), и она бросает это исключение:
Unhandled exception at at 0x000007FEFD0D940D in histogram.exe:
Microsoft C++ exception: cv::Exception at memory location 0x00000000001DF720.
Как я могу исправить эту ошибку и что ее вызывает?
Код, который я использую:
int main(int argc, char *argv[])
{
///Loading image to IplImage
//IplImage *img=cvLoadImage(argv[1]);
IplImage *img;
img = cvLoadImage("phidza.JPG",1);
cvShowImage("Ipl",img);
///converting IplImage to cv::Mat
Mat image=cvarrToMat(img);
imshow("Mat",image);
//std::cout<<"size: " << image.size() .height<< " , "
// << image.size().width << std::endl ;
if (image.empty())
{
cout << "Image cannot be loaded..!!" << endl;
return -1;
}
cvtColor(image, image, CV_BGR2GRAY); //change the color image to grayscale image
Mat img_hist_equalized;
equalizeHist(image, img_hist_equalized); //equalize the histogram
//create windows
//namedWindow("Original Image", CV_WINDOW_AUTOSIZE);
namedWindow("output", CV_WINDOW_AUTOSIZE);
//show the image
//imshow("Original Image", image);
imshow("output", img_hist_equalized);
waitKey(0); //wait for key press
imwrite("../output.jpg", img_hist_equalized); // save image
//cvSaveImage("output.jpg", img);
destroyAllWindows(); //destroy all open windows
return 0;
}
Этот сегмент кода отлично подходит для меня, и результат изображения был сохранен.. Возможно, в вашем случае были повреждены двоичные файлы, поэтому лучше перестроить библиотеку opencv.