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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/568712.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

测试开发——搭建一个简单 web服务(flask框架基础)项目实战

搭建一个简单 web服务-flask框架一、什么是wsgi?二、搭建一个简单 web服务三、扩展四、请求加参数的情况五、安装flask一、什么是wsgi? wsgi是webserver和application的传话筒&#xff0c;起桥梁通信的作用。 二、搭建一个简单 web服务 # coding:utf-8# 步骤&#xff1a;…

高效阅读论文

写论文做研究的时候少不了要看论文&#xff0c;但是很多时候看过同类的论文之后发觉什么也没记住&#xff0c;本文将有三位牛人想大家分享他们在阅读论文的一些技巧&#xff0c;希望对大家有用。科研牛人一&#xff1a; 从Ph.D到现在工作半年,发了12 篇paper, 7 篇first author…

【文章】七不出,八不归,原来是这个意思

春节临近&#xff0c;出行的人们越来越多。有句老话儿叫“七不出&#xff0c;八不归”也开始被大家提及起来&#xff01;那么&#xff0c;究竟什么是“七不出&#xff0c;八不归”&#xff1f;这句话到底有没有道理呢&#xff1f; 老话说“七不出&#xff0c;八不归”&#xff…

❤️ 跟我一起用python追到女朋友!❤️

时间过得真快&#xff0c;昨年520写了一个表白代码 点击此处 哈哈哈 &#xff0c;现在看来还蛮好看的&#xff01;哈哈哈&#xff0c;我专业帮人追女朋友&#xff0c;心想两玩得超好的同学&#xff0c;都是我帮忙追的哈哈哈&#xff0c;要是有粉丝需要我帮忙出谋划策&#xff0…

VGG网络结构(一)

刚开始接触深度学习、卷积神经网络的时候非常懵逼&#xff0c;不知道从何入手&#xff0c;我觉得应该有一个进阶的过程&#xff0c;也就是说&#xff0c;理应有一些基本概念作为奠基石&#xff0c;让你有底气去完全理解一个庞大的卷积神经网络&#xff1a;本文思路&#xff1a;…

测试开发——flask快速入门小基础

这几天看群里面的大佬基本上个个被逼相亲&#xff0c;可爱小娟娟还一天相四次&#xff08;简直了&#xff09;&#xff0c;我们程序员也是很帅的很美的&#xff0c;其实我们的头发也挺多的哈哈哈哈&#xff08;至少我身边的程序员挺多头发的&#xff0c;当然我linux老师头发有点…

【文章】鱼那么信任水, 水却煮了鱼!

鱼那么信任水&#xff0c; 水却煮了鱼。 叶子那么信任风&#xff0c; 风却吹落了叶。 人心的冷暖&#xff0c; 总是一直变幻。 熟悉的陌生了&#xff0c; 陌生的走远了。 人与人之间&#xff0c; 全靠一颗心&#xff0c; 情与情之间&#xff0c; 全凭一寸真。 落叶知秋…

VGG网络结构(二)

深度学习论文随记&#xff08;二&#xff09;---VGGNet模型解读 Very Deep Convolutional Networks forLarge-Scale Image Recognition Author: K Simonyan &#xff0c; A Zisserman Year: 2014 1、 导引 VGGNet是2014年ILSVRC竞赛的第二名&#xff0c;没错你没听错它是第…

情人节用python写个贪吃蛇安慰自己

这几天除了吃就是睡&#xff08;不知道为啥&#xff0c;吃饱就想睡&#xff09;&#xff0c;从大年三十到现在感觉啥都没做&#xff0c;写个代码安慰安慰自己吧哈哈哈哈。给大家分享几部最近看的电影&#xff08;要学英语的一定要get起来&#xff09;——《彩虹照耀》《罗宾逊漂…

【测试】用例设计思路-输入框类型功能

在我们的测试中&#xff0c;设计测试用例的质量&#xff0c;不仅与需求说明书有关&#xff0c;而且与测试人员的测试能力有关&#xff0c;今天我们通过一个典型的案例&#xff0c;总结一下对于输入框类型的功能&#xff0c;如何设计测试用例。 如图所示&#xff1a;我们需要测…

RuntimeError: Working outside of request context. This typically means that you attempted to use fun

菜吃多了醉了一、报错情况二、解决办法一、报错情况 我在写装饰器的时候运行报错&#xff1a; RuntimeError: Working outside of request context.This typically means that you attempted to use functionality that needed an active HTTP request. Consult the documen…

测试开发——flask视图函数与路由 实战重点

开头必须分享一个我的志玲姐姐&#xff0c;太可了&#xff01;点击此处 flask视图函数与路由的关系一、视图函数与路由 实战重点1.1 一个视图函数可以绑定多个URL地址1.2 视图装饰器应该放到最外层1.3所实现的装饰器要返回视图函数的返回值二、动态路由1. 用url匹配2. 通过传参…

SyntaxError: Non-UTF-8 code starting with ‘\xe2‘ 今天是小白上线的一天

打代码的时候第一行的utf-8注释居然空了个格 # coding utf-8估计是甜甜的恋爱想傻了&#xff0c;我居然还去查自己错哪里了&#xff0c;还说我的编码是对的鸭 正确输入&#xff1a; # codingutf-8

【Python爬虫】Python3+selenium环境配置

在我们爬虫爬网过程中&#xff0c;我们需要用到Python3selenium&#xff0c;Selenium是一个自动化测试工具&#xff0c;利用它我们可以驱动浏览器执行特定的动作&#xff0c;如点击、下拉等操作。对于一些JavaScript渲染的页面来说&#xff0c;这种抓取方式非常有效。 文章参考…

numpy 数组与矩阵的乘法理解

1. 当为array的时候&#xff0c;默认d*f就是对应元素的乘积&#xff0c;multiply也是对应元素的乘积&#xff0c;dot&#xff08;d,f&#xff09;会转化为矩阵的乘积&#xff0c; dot点乘意味着相加&#xff0c;而multiply只是对应元素相乘&#xff0c;不相加 2. 当为mat的时候…

(AU/PS)Adobe Audition CC.exe -系统错误 由于找不到MSVCP120.dll,无法继续执行代码。重新安装程序可能会解决此问题。

bug简直难过报错情况&#xff1a;由于找不到MSVCP120.dll&#xff0c;无法继续执行代码。重新安装程序可能会解决此问题。最终解决办法心得体会https://blog.csdn.net/hanhanwanghaha宝藏女孩 欢迎您的关注&#xff01; 欢迎关注微信公众号&#xff1a;宝藏女孩的成长日记 让这…

【数据库】Window环境安装MySQL Server 5.7.21

正常我们在mysql官网下载安装的MySQL比较大&#xff0c;因为它集成了好多东西&#xff0c;尽管方便&#xff0c;但是东西比较多&#xff0c;有些我们可能不想要&#xff0c;这时我们可以直接下载单个MySQL Server安装&#xff0c;所以这篇文章主要介绍的就是在window环境下安装…

产品经理:论项目计划有多重要?——软件项目管理

凡事预则立&#xff0c;不预则废前言一、论安迪特质与项目经理的共通性二、个人感想三、我的产品经理实习笔试前言 昨天杨老师上了一让我记忆很深刻的课&#xff0c;就是项目计划的重要性&#xff0c;以《肖申克的救赎 》为例: 《肖申克的救赎 》的背景是20世纪30年代&#xff…

Android开发环境配置介绍

在我们进行AppiumAndroid进行自动化测试时&#xff0c;我们需要安装android_sdk环境&#xff0c;安装过程发现Android SDK&#xff0c;Android studio&#xff0c;AVD Manager&#xff0c;SDK Manager等名词&#xff0c;本篇文章主要介绍的就是Android开发环境的搭建&#xff0…

python——百钱买百鸡:一只公鸡5块钱,一只母鸡3块钱,三只小鸡1块钱,现在要用一百块钱买一百只鸡,问公鸡、母鸡、小鸡各多少只?

学习《python程序设计教程》的时候&#xff0c;遇到了这个问题&#xff0c;觉得还蛮好玩的&#xff1a; 百钱买百鸡&#xff1a;一只公鸡5块钱&#xff0c;一只母鸡3块钱&#xff0c;三只小鸡1块钱&#xff0c;现在要用一百块钱买一百只鸡&#xff0c;问公鸡、母鸡、小鸡各多少…