不能在openv中读/写映像

Can not read/write an image in opencv

本文关键字:映像 中读 openv 不能      更新时间:2023-10-16

我有这个代码来创建和编写一个图像在opencv:

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

,但当我运行第三个代码,我得到错误的文件扩展名是未知的,因此我写不能写图像。

这段代码有什么问题?

edit1

我更改了代码,看到代码或安装有问题。所以我现在有了这段代码

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

我确定c:/tmp/a.p g文件存在。

当我运行应用程序时,我得到这个错误:

OpenCV Error: Bad flag (parameter or structure field) (Unrecognized or unsupported array type) in unknown function, file C:slavebuildsWinInstallerMegaPacksrcopencvmodulescoresrcarray.cpp, line 2482
C:slavebuildsWinInstallerMegaPacksrcopencvmodulescoresrcarray.cpp:2482: error: (-206) Unrecognized or unsupported array type

我遵循这个答案,所以安装OpenCV到我的系统(我使用vc11,而不是vc10在安装期间)安装OpenCV 2.4.3在Visual c++ 2010 Express

编辑2

问题是我把调试库和发布库混在一起了,

对于release,请使用末尾没有d的发布库(例如opencv_calib3d243.lib)改为od opencv_calib3d243d.lib)

用于调试使用在末尾有d的调试库,例如opencv_calib3d243d.lib

确保您使用的库名称基于您拥有的opencv版本,例如opencv_calib3d245d。

确保您没有混淆OpenCV的发布和调试DLL。另外检查是否x86或x64 DLL的工作。有时x64 DLL在x64机器上确实会出错。不知道为什么,但我不得不切换到x86版本

试试这个:

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

请确定您的输出路径,imageWidth,imageHeight。此外,检查您的依赖项(在Linux下需要libjpeg8):

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