OpenCV 3.1 imwrite()函数写入异常问题解决方法

最近配置了OpenCV3.1版本,按照2.x的习惯写了一个保存图片的代码(测试证明该代码在2.4.11下运行正常),但是在使用imwrite()函数的时候出现了异常。 代码如下:

#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>using namespace std;
using namespace cv;int main()
{Mat SrcImage = imread("1.jpg");imwrite("读入的图片.png", SrcImage);imshow("原图", SrcImage);waitKey(0);return 0;
}

只是很简单的读入一个图片然后再保存它。运行后异常如下:

修改办法: 1.是将debug模式修改为Release,代码不用修改的情况下即可正常运行。 2.将imwrite()函数写入第三个参数,我们查看imwrite()的定义可以看到一个官方给出的例子:

 #include <opencv2/opencv.hpp>using namespace cv;using namespace std;void createAlphaMat(Mat &mat){CV_Assert(mat.channels() == 4);for (int i = 0; i < mat.rows; ++i) {for (int j = 0; j < mat.cols; ++j) {Vec4b& bgra = mat.at<Vec4b>(i, j);bgra[0] = UCHAR_MAX; // Bluebgra[1] = saturate_cast<uchar>((float (mat.cols - j)) / ((float)mat.cols) * UCHAR_MAX); // Greenbgra[2] = saturate_cast<uchar>((float (mat.rows - i)) / ((float)mat.rows) * UCHAR_MAX); // Redbgra[3] = saturate_cast<uchar>(0.5 * (bgra[1] + bgra[2])); // Alpha}}}int main(int argv, char **argc){// Create mat with alpha channelMat mat(480, 640, CV_8UC4);createAlphaMat(mat);vector<int> compression_params;compression_params.push_back(IMWRITE_PNG_COMPRESSION);compression_params.push_back(9);try {imwrite("alpha.png", mat, compression_params);}catch (cv::Exception& ex) {fprintf(stderr, "Exception converting image to PNG format: %s\n", ex.what());return 1;}fprintf(stdout, "Saved PNG file with alpha data.\n");return 0;}

IMWRITE_PNG_COMPRESSION 为对于PNG格式的图片,这个参数表示压缩级别(CV_IMWRITE_PNG_COMPRESSION)从0到9。较高的值意味着更小的尺寸和更长的压缩时间,而默认值是3。 所以上述程序中选择了压缩级别为9。除此之外OpenCV还提供了很多种其他的保存格式,在转到定义后的imgcodecs.hpp文件中都有很详细的介绍。

所以 我们只需要简单改写代码,即可解决异常问题。

#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>using namespace std;
using namespace cv;int main()
{Mat SrcImage = imread("1.jpg");vector<int> compression_params;compression_params.push_back(IMWRITE_PNG_COMPRESSION);compression_params.push_back(9);imwrite("读入的图片.png", SrcImage, compression_params);imshow("原图", SrcImage);waitKey(0);return 0;
}

最后,用以上两种办法都解决了异常,但是异常产生的原因是什么,为什么这样做就没有异常了,尤其是params参数本身就带默认值。这个问题我也没有弄明白,弄懂后在更新出来。

转载自 https://cloud.tencent.com/developer/article/1010015

OpenCV 3.1 imwrite()函数写入异常问题解决方法相关推荐

  1. 逆水寒服务器更新响应超时,逆水寒patcher.zip文件更新失败怎么办 更新文件异常问题解决方法...

    逆水寒ol是由网易打造的一款国风武侠动作角色扮演类网游,游戏进行了更新推送,但是不少玩家出现了更新文件异常的问题,之后手动下载更新文件也无法下载,那么该如何解决?下面小编带来更新文件异常问题解决方法, ...

  2. 2003服务器文件自动只读,windows 2003 文件夹只读,iis 无法写入的问题解决方法...

    1,检查是否在IIS中对整个网站打开了"写入"权限,而不仅仅是数据库文件. 2,检查是否在WIN2000的资源管理器中,将网站所在目录对EveryOne用户打开所有权限.具体方法是 ...

  3. CMSIS-DSP的arm_mat_init_f32矩阵求逆函数结果不对问题解决方法

    CMSIS-DSP库是ARM提供的一个用于STM32工程实现矩阵计算的C语言函数库. arm_mat_init_f32函数求矩阵的逆会出现问题的原因与库函数中生成矩阵的方式有关.矩阵的生成并不会申请新 ...

  4. 进原神显示服务器错误黑屏,《原神》数据异常怎么办 数据异常问题解决方法...

    本次给大家带来的是原神中游戏数据异常报错的解决方法,今天很多玩家在游戏过程中遇到了这样的问题,碰到这样的情况应该怎么解决呢?这里给大家详细介绍,希望能帮助到各位有需要的玩家. 原神游戏数据异常怎么办 ...

  5. 苹果手机软件闪退怎么解决_《NBA2K21》闪退怎么办 闪退异常问题解决方法

    导读 相信很多小伙伴在游玩<NBA 2K21>时都出现了闪退的问题,但是却不清楚要怎么解决,所以小编这次就为大家带来了<NBA 2K21>闪退解决方法介绍,有需要的小伙伴可以来 ...

  6. SpringBoot-java.lang.IllegalArgumentException: Not a managed type异常问题解决方法

    见博客:https://blog.csdn.net/heyewu4107/article/details/78942393

  7. 为什么lol进服务器时显示错误,《lol手游》显示authenticationerror怎么解决 异常问题解决方法...

    导 读 LOL手游提示authentication error问题怎么办?在lol的手游中,玩家们在注册登录国际服的时候遇到了很多问题,比如在登陆过程中提示authentication error的问 ...

  8. 用友U8财务系统客户档案修改,客户权限维度异常问题解决方法

    1,问题背景 公司在做CRM和用友U8系统的打通,中间遇到了一个问题:客户修改后信息同步至U8报一个如下错误: {"errcode":"20005"," ...

  9. 忘川风华录读取服务器配置文件失败,《忘川风华录》公测常见异常问题解决方法 新手攻略...

    导 读 忘川风华录在今日正式公测,其中也会碰到一些常见的问题,那么下面就一起来看下忘川风华录公测常见问题吧,希望对大家有所帮助. Q:<忘川风华录>公测开服时间是? A:<忘川风华录 ...

最新文章

  1. oracle 追踪特定sql语句
  2. 为什么Java 8中不再需要StringBuilder拼接字符串
  3. 神策数据与 UCloud 达成战略合作,开启高效企业服务新模式
  4. java random产生随机数_java的三种随机数生成方式,必掌握
  5. jq写的项目如何部署到静态服务器_如何在阿里云服务器上部署一个Web项目
  6. 视频教程-AJAX+JSON完成实时验证码检测+输入补齐-Java
  7. 代码整洁之道-程序员的职业素养
  8. iwconfig使用
  9. EasyCamera摄像机配置
  10. b85主板装服务器系统,[U盘装系统]技嘉B85主板U盘装系统图文教程
  11. MYSQL查看进程和kill进程
  12. keil更改黑色背景颜色
  13. 坚持#第235天~哎呀,最近培训云计算忙得都把写博客的大事给忘了,赶快捡起来
  14. mac登陆远程服务器
  15. Autoware 1.14(WSL2) 与LG SVL Simulator(Win11)联合仿真
  16. 使用Microsoft SyncToy 文件同步/备份 自动化处理
  17. Cascade R-CNN: Delving into High Quality Object Detection(个人学习笔记)
  18. Shopee账户被冻结是什么原因?怎么解封?
  19. React 新书来了!【留言送书】
  20. N3-C5-NHS ester,叠氮-C5-琥珀酰亚胺酯,866363-70-4叠氮化物可与炔烃、DBCO和BCN进行铜催化的点击化学反应

热门文章

  1. matlab fgetl用法,Matlab fgetl strsplit 函数
  2. stm32的语音识别_基于stm32循迹避障语音控制金属探测蓝牙小车设计(原理图+pcb+源码+参考文档)...
  3. mybatis 取查询值_MyBatis-SELECT基本查询
  4. python中迭代器有哪些_Python迭代器:什么是Python中的迭代器以及如何使用它?
  5. 线程被中断跟被阻塞有什么区别_宠物加盟店跟自营店有什么区别
  6. 计算机组成原理第二章数据,计算机组成原理第二章数据在计算机中的表示
  7. 什么是传感器? 传感器由哪几部分组成? 传感器分类?
  8. h710阵列卡支持最大硬盘_DELL服务器RAID磁盘阵列在线扩容(以H710P阵列卡为例)
  9. HTML+CSS+JS实现echarts图表炫光分布地图动画
  10. mysql linux改密码忘记了怎么办_linux上mysql改密码忘了怎么办?