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,一经查实,立即删除!

相关文章

git版本控制总结

对于我们个人来说&#xff0c;把代码放在https://github.com/上是一个不错的选择&#xff0c;在实际中&#xff0c;我们如何操作呢&#xff1f;主要以下几个方面&#xff1a; 一、准备工作 1.在https://github.com/ 注册账号 2.在Windows上安装Git&#xff08;本人&#x…

测试开发——搭建一个简单 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;…

【Python爬虫】BeautifulSoup4 库的一些用法

Beautiful Soup 是用Python写的一个HTML/XML的解析器&#xff0c;它可以很好的处理不规范标记并生成剖析树(parse tree)。 它提供简单又常用的导航&#xff08;navigating&#xff09;&#xff0c;搜索以及修改剖析树的操作。它可以大大节省你的编程时间。安装 Beautiful Soup…

测试开发——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;我们需要测…

python 随机数

python中随机数的用法总结第一部分&#xff1a;numpy中的random模块numpy.random.randn(d0, d1, ..., dn)生成标准正态分布。括号里是生成的随机数的维度。将会得到一个ndarray or float,(括号里空着就会得到一个float)>>numpy.random.randn(3,4)array([[-0.64094426, -0…

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…

【Python】读写文件的操作

编程语言中&#xff0c;我们经常会和文件和文件夹打交道&#xff0c;这篇文章主要讲的是Python中&#xff0c;读写文件的常用操作: 一、打开文件 openFile open(../Files/exampleFile.txt, a) 说明&#xff1a; 1. 第一个参数是文件名称&#xff0c;包括路径,可以是相对路径…

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

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

【Python】文件夹的常用操作

上一篇文章主要讲了Python中&#xff0c;读写文件的常用操作&#xff0c;今天这篇文章主要讲的是关于文件夹的一些常用操作&#xff1a; 关于文件的操作&#xff0c;需要导入包&#xff1a;import os 文件操作&#xff1a; #1.创建相对路径的空文件&#xff0c;如果已有文件…

Python 中的range(),arange()函数

1.range()返回的是range object&#xff0c;而np.arange()返回的是numpy.ndarray() range 尽可用于迭代&#xff0c;而 np.arange 作用远不止于此&#xff0c;它是一个序列&#xff0c;可被当做向量使用。 2.range()不支持步长为小数&#xff0c;np.arange()支持步长为小数 3.两…

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;这种抓取方式非常有效。 文章参考…