cvsaveimage 异常_C++ IplImage*的若干bug之三:cvSaveImage問題
源代碼:
//crop image
IplImage *imgTemp = imgcrop(rect, img); //從原圖img中裁剪出rect區域的圖像patch,該方法編譯運行均無誤
if(!imgTemp){
LOOGE<
cvReleaseImage(&imgTemp);imgTemp = 0;//如果裁剪出錯,釋放imgTemp
return -1;
}
//resize image
IplImage* newImg = imageResize(imgTemp, sideControl); //將imgTemp最長邊控制為sideControl進行resize,保存為newImg
if(!newImg){
LOOGE<
cvReleaseImage(&imgTemp);imgTemp = 0;//如果resize出錯,釋放imgTemp和newImg,繼續下一次循環
cvReleaseImage(&newImg);newImg = 0;
return -1;
}
//save image crops
cvSaveImage( “newImg.jpg”, newImg );//保存newImg,此處為上述做裁剪及resize的最終目的!!!
//release
cvReleaseImage(&imgTemp);imgTemp = 0;
cvReleaseImage(&newImg);newImg = 0;
bug分析:
(1)如果imageResize時出錯,那么會釋放掉imgTemp和newImg兩個變量,且程序退出運行;
(2)否則,程序正常進行,在接下來進行的釋放中,第一條cvReleaseImage中的imgTemp可以正常釋放,而第二條中釋放newImg運行時出錯;
(3)將兩條cvReleaseImage調換了順序,先釋放newImg正常,后釋放imgTemp時運行出錯;
(4)將
cvReleaseImage(&imgTemp);imgTemp = 0;
放到了
cvSaveImage("newImg.jpg", newImg);前面后,編譯通過,但運行至cvSaveImage處,出現錯誤信息如下:
OpenCV Error: Bad argument (Unknown array type) in cvarrToMat, file /home/tangyuan/programs/opencv-2.4.11/modules/core/src/matrix.cpp, line 698
terminate called after throwing an instance of 'cv::Exception'
what(): /home/tangyuan/programs/opencv-2.4.11/modules/core/src/matrix.cpp:698: error: (-5) Unknown array type in function cvarrToMat
此時查看了cvSaveImage的返回值為1;
(5)實在是心累,判定應該是imageResize返回IplImage*時出的問題,為了將最終resize后的圖像保存下來,遂將cvSaveImage直接寫在了imageResize方法里面進行圖像保存,imageResize的返回值設為int不再是IplImage*。
問題解決。。。
雖然問題解決了,但我的內心依舊是凌亂而悲痛的。。。
cvsaveimage 异常_C++ IplImage*的若干bug之三:cvSaveImage問題相关推荐
- WPF .NET 4.0 OpenClipboard 失败 (异常来自 HRESULT:0x800401D0 (CLIPBRD_E_CANT_OPEN)) BUG解决
WPF .NET 4.0 OpenClipboard 失败 (异常来自 HRESULT:0x800401D0 (CLIPBRD_E_CANT_OPEN)) BUG解决 参考文章: (1)WPF .NE ...
- 受检异常 非受检异常_C++异常实战之十一 使用scope_fail处理复杂场景(非fail-fast)下的异常...
本章引入一个额外的机制scope_exit/scope_fail,以处理复杂场景下的cleanup与rollback,同时,对RAII语义进行一定语义上的修正,以提供一个更加友好的异常处理的心智模型. ...
- linux内核 异常 log,Linux Kernel WARN()/BUG(), Oops/Panic, Tainted分析
稳定性范畴, 参考5.x kernel. kernel Oops Oops指的就是内核的不正确行为,比如对驱动来说:static int i82092aa_pci_probe(struct pci_d ...
- c 异常 java异常_C ++和Java中异常处理的比较
如今,几乎所有面向对象的语言都具有异常处理功能.在C ++和Java中,我们也可以获得这种功能.C ++中的异常处理和Java中的异常处理之间有一些相似之处,例如在两种语言中,我们都必须使用try-c ...
- c# 溢出抛异常_C#中的int是否没有溢出异常?
在C#中,OverflowException不会引发(在VB中,默认情况下会引发异常). 为了获得排他性,您必须将代码嵌入checked上下文中: byte value = 241; checked ...
- 辐射避难所买了东西显示服务器异常,辐射避难所有哪些BUG 现存BUG说明及解决方法盘点...
绝大部分游戏都有bug,辐射避难所怎么能免俗呢?盘点一下这破游戏中的各种bug,部分是能解决的,不能解决的可尽量避免. 1,永远不开心的人.这个bug是一个小人的快乐度永远是10%,rush, ...
- c# 溢出抛异常_C#捕获堆栈溢出异常
C#捕获堆栈溢出异常 我得到了一个抛出堆栈溢出异常的方法的递归调用. 第一个调用被try catch块包围,但没有捕获异常. 堆栈溢出异常是否以特殊方式运行? 我可以正确捕获/处理异常吗? 注意:如果 ...
- 如何获取exception的target异常_C# 基础知识系列- 15 异常处理篇
0. 前言 为什么我们需要异常处理?什么是异常? 在汉语中,异常指非正常的:不同于平常的.翻译到程序中,就是指会导致程序无法按照既定逻辑运行的意外,或者说是错误.可能会有小伙伴好奇了,我们的程序不是正 ...
- java聊天系统异常问题_聊天室bug问题
1.页面一直在index.jsp,因为input表单里的name写成valuele了 2.history.go(0); 3.头文件不能随便删,中转文件的才能删 4.每取一次application,就要 ...
最新文章
- 在Ubuntu上源码安装MySQL+安装问题解决+安全优化
- MIT媒体实验室主任辞去一切职务:拿了爱泼斯坦170万美金,涉及程序违规,麻省理工宣布彻查...
- 「WC2018」即时战略
- java23种模式之单例模式
- DeepNude已迅速下线,来看看它涉及的图像修复技术
- 句柄与指针的区别(一)
- chrome浏览器 提示Adobe Flash Player未安装的解决方法
- 在dom最前面插入_虚拟 DOM 到底是什么?
- 最新微信小程序抓包方法
- Delphi中TWebBrowser的用法
- matlab 有限元分析与应用,matlab有限元分析与应用(书及源程序)
- ENVI实验教程(3)遥感图像预处理—几何校正
- 易语言php验证码识别,易语言自动打码验证码服务端带案例
- R语言基本用法(主要为时间序列分析方面)
- 分区软件工具哪个好用
- 先吃奶油还是先吃蛋糕--推迟满足感
- VUE 爬坑之旅 -- vue 项目中将简体转换为繁体
- FastDFS,Redis,Solr,ActiveMQ核心技术整合五
- 组合数学 (三): 排列组合的数学逻辑
- Git仓库数据损坏后如何恢复