【问题标题】:OpenCV imwrite not writing imageOpenCV imwrite不写图像
【发布时间】:2017-10-10 06:20:03
【问题描述】:

我试图使用 OpenCV imwrite 函数将图像写入文件夹。 代码编译并成功运行,但图像未保存在文件夹/路径中。我正在从“imshow”获取输出,我的图像为 CV_8UC1 格式。

找到下面的代码

    Mat reflection = function which computes image
    imshow("output image", reflection);
    imwrite("E:/New folder/img.bmp", reflection);

所以我检查了current folder writing 并修改了这样的代码

bool check = imwrite("./img.bmp", reflection);

这个 'bool check' 状态是 'false' 并且没有写入图像。

我还根据microsoft help 的指南检查了文件夹权限,我的“E/New Folder/”被允许写入。仍然,图像没有保存。 我可以接受任何图像格式 .jpg、.png 和 .bmp。 我正在使用 Windows 7、OpenCV 3.0、Visual Studio 2017。

请帮助我并感谢您阅读它

【问题讨论】:

  • 你试过没有路径吗?保存到当前工作目录或其他东西......比如 imwrite("img.bmp", reflection); ?
  • 您是否尝试将图像转换为 CV_8UC3?我怀疑1通道图像可以存储在bmp文件中。
  • 如果你选择imwrite("E:/New folder/img.png", reflection);,它会起作用吗?
  • 是否所有必要的 dll 都可用于应用程序?例如,对于 videowriter,如果缺少 opencv_ffmpeg dll,则不会写入任何帧,但程序确实运行(并且没有抱怨缺少 dll 或其他东西)。也许 imwrite 也有一些类似的依赖关系。
  • @Micka imwrite 必须有链接器的 -highugi 标志,但如果它不可用会抛出链接器错误

标签: c++ opencv


【解决方案1】:

Opencv 似乎不支持保存 BMP 文件,请查看 imwrite docs。将文件名更改为img.png 应该可以。在 windows 中使用 ./ 也是无效的,这在 unix 系统中用于表示当前工作目录,参见 Windows current directory。 更新到

bool check = imwrite(".\img.png", reflection);

bool check = imwrite("img.png", reflection);

应该工作

【讨论】:

  • 我试了还是不保存图片 bool check value is false
  • opencv好像不能保存BMP文件,把文件改成“img.png”Docs
【解决方案2】:

OpenCV确实支持bmp,如下使用即可。

bool check = imwrite("img.bmp", reflection);

【讨论】:

    猜你喜欢
    • 2018-03-02
    • 1970-01-01
    • 1970-01-01
    • 2020-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-22
    相关资源
    最近更新 更多