Код сам по себе не является неправильным, и даже если imread не был успешным, imwrite не сработает.(Хотя пустой cv :: Mat, записанный в jpg-файл, создает пустые файлы, которые не распознаются как допустимые файлы изображений).
Итак, чтобы точно определить вашу проблему, используйте механизм try / catch:
try {
imshow("Lisa-Original", img_original);
imshow("Lisa-Grayscale", img_grayscale);
imwrite("LisaGray.jpg", img_grayscale);
}
catch(cv::Exception& e) {
std::cout << e.msg << std::endl;
}
На моем компьютере, когда imwrite не удается из-за формата, сообщение:
OpenCV(4.0.0) D:\Dev\Opencv4\opencv-4.0.0\opencv-4.0.0\modules\imgcodecs\src\loadsave.cpp:661: error: (-2:Unspecified error) could not find a writer for the specified extension in function 'cv::imwrite_'
В этом случае попробуйте использовать другой формат для сохранения изображения и / или проверьте, скомпилирован ли opencv с правильными параметрами и библиотеками.