2013-05-23 3 views
2

У меня есть этот код для создания и записи изображения в OpenCV:Невозможно прочитать/записать изображение в OpenCV

char * outImage="C:/tmp/000014/outimage.jpg"; 
    Mat gray_image(imageWidth,imageHeight, CV_8UC1, Scalar(255)); 

    imwrite(outImage, gray_image); 

, но когда я бегу thid код, я получаю сообщение об ошибке, что расширение файла не известно и, следовательно, iwrite не может писать изображение.

Что не так с этим кодом?

edit1

Я изменил код, чтобы увидеть, есть проблема с кодом или установки. поэтому у меня есть этот код прямо сейчас

Mat x=imread("C:/tmp/a.jpg"); 
imshow("Image", x); 
waitKey(0); 

Я уверен, что файл с: /tmp/a.jpg существует.

При запуске приложения, я получаю эту ошибку:

OpenCV Error: Bad flag (parameter or structure field) (Unrecognized or unsupported array type) in unknown function, file C:\slave\builds\WinInstallerMegaPack\src\opencv\modules\core\src\array.cpp, line 2482 
C:\slave\builds\WinInstallerMegaPack\src\opencv\modules\core\src\array.cpp:2482: error: (-206) Unrecognized or unsupported array type 

Я последовал за этот ответ так, чтобы установить OpenCV о моей системе (я использую VC11, insteade из VC10 во время установки) Installing OpenCV 2.4.3 in Visual C++ 2010 Express

редактировать 2

проблема заключалась в том, что я смешал отладки и выпуска библиотеки,

Для библиотек высвобождения используют выпуск, которые не имеют d в конце (например opencv_calib3d243.lib вместо од opencv_calib3d243d.lib)

для отладки использовать библиотеки отладки, который D в конце, например opencv_calib3d243d.lib

Убедитесь, что вы используете правильное имя lib на основе версии opencv, которую у вас есть, например opencv_calib3d245d.lib for opencv 2.4.5.

ответ

1

Убедитесь, что вы не перепутали релиз и отлаживать библиотеки DLL из OpenCV. Кроме того, проверьте, будут ли работать x86 или x64 DLL. Иногда x64 DLL беспорядок на x64 машинах. Не знаю, почему, но мне пришлось перейти на версию x86.

1

Попробуйте это:

void write(){ 
    char * outImage="C:/tmp/000014/outimage.jpg"; 
    Mat img = Mat(Size(imageWidth,imageHeight), CV_8UC1, Scalar(255)); 
    imwrite(out, img); 
} 

Пожалуйста, убедитесь, что на вашем пути выхода, ImageWidth, ImageHeight. Кроме того проверить Dependance (вам нужно libjpeg8 под Linux):

Для Linux

sudo apt-get install libpng12-0 libpng12-dev libpng++-dev libpng3 libpnglite-dev libpngwriter0-dev libpngwriter0c2 zlib1g-dbg zlib1g zlib1g-dev pngtools libjasper-dev libjasper-runtime libjasper1 libjpeg8 libjpeg8-dbg libjpeg62 libjpeg62-dev libjpeg-progs libtiff4-dev libtiff4 libtiffxx0c2 libtiff-tools ffmpeg libavcodec-dev libavcodec52 libavformat52 libavformat-dev libswscale0 libswscale-dev openexr libopenexr6 libopenexr-dev 

Для Windows следует, что руководство: http://docs.opencv.org/doc/tutorials/introduction/windows_install/windows_install.html

+0

Спасибо. Я проверил установку, и кажется, что это правильно. Где библиотека jpeg на окнах? – mans

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