c++ - 无法在opencv中读取/写入图像

标签 c++ opencv

我有这段代码可以在 opencv 中创建和写入图像:

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

  imwrite( outImage, gray_image );

但是当我运行该代码时,我收到错误消息,文件扩展名未知,因此 iwrite 无法写入图像。

这段代码有什么问题?

编辑1

我更改了代码,发现代码或安装有问题。 所以我现在有了这个代码

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

我确信文件 c:/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,而不是 vc10)Installing OpenCV 2.4.3 in Visual C++ 2010 Express

编辑2

问题是我混合了调试和发布库,

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

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

确保您根据您拥有的 opencv 版本使用正确的库名称,例如 opencv_calib3d245d.lib for opencv 2.4.5。

最佳答案

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

关于c++ - 无法在opencv中读取/写入图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16717883/

相关文章:

opencv - OpenCV中的PCA以及如何准备数据?

c++ - C++ 中具有 std::vector 数据成员的 constexpr 成员函数

python - OpenCV 将所有文本处理为白底黑字(分割)

c++ - 使用数组

c++ - 在从L值引用类型推导的类型上调用静态constexpr成员函数时,clang和gcc意见不一致

c++ - matlab在opencv中查找函数实现?

python - 有没有好的去除线条的方法?

python - 在单独的进程中读取 USB 摄像头时,OpenCV 在 OS X 上崩溃

c++ - 如何在具有 protected 析构函数和公共(public)销毁方法的 3 方类上使用 shared_ptr

c++ - 如何创建用于测试 QTcpSocket 的依赖注入(inject)?