opencv 程序bug

安卓运行Opencv项目提示Caused by: CvException [org.opencv.core.CvException: cv::Exception: OpenCV(4.9.0) 解决: 找到opencv模块目录下`haarcascade_frontalface_alt.xml` 文件并将其复制到在 app 模块的 main 目录下新建 `assets` (没有就新建).运行项目编写代码之后提示爆了如下错误: (错误得右移才能看到)原因: 没有在app模块载入opencv的模型. 阅读详情
Openv 调试错误

今天,在做opencv程序时,遇到“runtime error R6025 pure virtual function call”错误,找了相关的资料后,发现opencv这类错误说的最多的是缺少销毁窗口函数等,然而我的错误肯定不是这样的,因为我有销毁窗口函数,而且通过调试,我发现我的这个错误是在最后运行return语句后出现的,虽然仍然不清楚为什么,但是仍然把这个错误记录下来,并且把解决方案写下来。

首先,我在改写程序时,出现如下错误:


程序源码:

// frame_3diff.cpp : 定义控制台应用程序的入口点。
 //
 
 #include <stdio.h>
 #include <highgui.h>
 #include <cv.h>
 #include <cxcore.h>
 
 #define threshold_diff1 10 //设置简单帧差法阈值
 #define threshold_diff2 10 //设置简单帧差法阈值
 
 using namespace cv;
 using namespace std;
 
 int main(int argc,unsigned char* argv[])
 {
    IplImage* img_src1,*img_src2,*img_src3;//3帧法需要3帧图片
      IplImage* gray1,*gray2,*gray3;
    IplImage* gray_diff1,*gray_diff2;//存储2次相减的图片
    IplImage* gray;//用来显示前景的
  CvCapture* capture = 0;
        bool pause=false;
 
        capture = cvCreateFileCapture("H:\\123\\qiang\\Debug\\test.avi");


cvNamedWindow("foreground",CV_WINDOW_AUTOSIZE);
        IplImage* img_src=0;
        for (;;)
     {
          if(!false)
          {
img_src1 = cvQueryFrame(capture);

gray = cvCreateImage(cvGetSize(img_src1),img_src1->depth,1);//灰度图
gray1 = cvCreateImage(cvGetSize(img_src1),img_src1->depth,1);//灰度图
gray2 = cvCreateImage(cvGetSize(img_src1),img_src1->depth,1);//灰度图
gray3 = cvCreateImage(cvGetSize(img_src1),img_src1->depth,1);//灰度图
gray_diff1 = cvCreateImage(cvGetSize(img_src1),img_src1->depth,1);//灰度图
gray_diff2 = cvCreateImage(cvGetSize(img_src1),img_src1->depth,1);//灰度图
 cvShowImage("video_src",img_src1);
               cvCvtColor(img_src1,gray1,CV_BGR2GRAY);
         
              waitKey(5);
                 img_src2 = cvQueryFrame(capture);
 
cvCvtColor(img_src2,gray2,CV_BGR2GRAY);
cvShowImage("video_src",img_src2);
 waitKey(5);
             
img_src3 = cvQueryFrame(capture);

cvCvtColor(img_src3,gray3,CV_BGR2GRAY);
          cvAbsDiff(gray2,gray1,gray_diff1);//第二帧减第一帧
cvAbsDiff(gray3,gray2,gray_diff2);//第三帧减第二帧
 
  for(int i=0;i<gray_diff1->height;i++)
  {
  unsigned char *ptr1=(unsigned char*)(gray_diff1->imageData+ i*gray_diff1->widthStep);
  unsigned char *ptr2=(unsigned char*)(gray_diff2->imageData+ i*gray_diff2->widthStep);
 for(int j=0;j<gray_diff1->width;j++)
                 {
                     if(ptr1[j]>=threshold_diff1)    
  ptr1[j]=255;
                     else ptr1[j]=0;
 
                     if(ptr2[j]>=threshold_diff2)//第二次相减阈值处理
                         ptr2[j]=255;
                      else ptr2[j]=0;
                 }
  }
             
  cvAnd(gray_diff1,gray_diff2,gray);
             cvShowImage("foreground",gray);
          }
         char c=(char)waitKey(10);
         if (c==27)
         {
             break;    
         }

     }
cvReleaseImage(&gray);
cvReleaseImage(&gray1);
cvReleaseImage(&gray2);
cvReleaseImage(&gray3);
cvReleaseImage(&gray_diff1);
cvReleaseImage(&gray_diff2);
cvReleaseCapture(&capture);
cvDestroyAllWindows();
      return 0;
 }

上述程序之所以出现上面的bug,是因为当img_src3 = cvQueryFrame(capture);获取到的图片为空时,后面函数运行就会出错,所以应该在img_src3 = cvQueryFrame(capture);后加上判断退出语句:if(!img_src3) {return -1;}而且在char c=(char)waitKey(10);之前加上img_src3=NULL;然而这样修改后虽然解决上面的bug,但是却弹出另一个bug:


此时再次修改如下:将上面的if(!img_src3) {return -1;}修改为:if(!img_src3) {break;}即可

还请各位高手解释,虽然解决了bug,但是我还是不明白;

我的运行平台是windowsXP2003+vs2008+opencv2.1。

使用Opencv3运行Opencv2开发的程序遇到的bug Bug1: /usr/bin/ld: build/main.o: undefined reference to symbol '_ZN2cv6imreadERKNS_6StringEi' /usr/local/lib/libopencv_imgcodecs.so.3.4: error adding symbols: DSO missing from command line collect2:... 阅读详情

相关推荐

OpenCV异常处理机制

很多函数,都会对参数的有效性进行判断,不符合要求,直接弹对话框,然后程序崩溃,逼得你不得不正确调用他。这个属于编程的逻辑错误,就像assert一样,用于排除编码错误,这和业务错误处理的层次是不同的。        一般,我们仿照这种模式,如下int TestCvError( IplImage *pImgGray, int iNum) { CV_FUNCNAME( "TestCvError" ); __BEGIN__; if (iNum depth !=

计算机视觉 4071

OpenCV oom问题解决

Java调用OpenCV时opencv报内存溢出oom异常问题,最终通过调低堆空间-Xms、-Xmx解决

cctvyuzhou的博客 2954

别再自己写组件了!用uni-app的midButton属性5分钟搞定中间凸起TabBar(H5/小程序通用)

本文详细介绍了uni-app官方提供的midButton属性,帮助开发者5分钟内实现中间凸起的TabBar效果,无需编写繁琐的自定义组件代码。该方案兼容H5和微信小程序平台,配置简单且维护成本低,大幅提升开发效率和性能表现。

weixin_30431445的博客 347

opencv报错解决合集

python 中 opencv 使用过程中的一些注意事项

weixin_41792888的博客 5428

Cursor 详细使用

Cursor 是一款基于 VSCode 开发的 AI 驱动代码编辑器,集成 GPT-4、Claude3.5 等先进 LLM,具备代码补全、生成、解释、调试等功能,可提升开发效率和代码质量。3. 代码编辑:在编辑区编写代码,利用快捷键提升效率,如 Ctrl+Space 触发智能代码补全、Ctrl+K 润色或修改代码、Ctrl+L 智能问答与代码编辑。3. 代码解释:选中代码,按 Ctrl+L,输入如 “解释这段代码的功能”,Cursor 会给出详细解释。

坚持写博客,大家的关注是我前进的动力! 4812

Bybit面经

这段总结描述了求职者在Bybit面试过程中的经历和相关问题,包括面试内容、求职者向面试官提问的问题以及关于Bybit的信息

郑泽洲的博客 2579

解决opencv中算术运算报错: OpenCV(4.6.0) D:\a\opencv-python\opencv-python\opencv\modules\highgui\src\window.cp

解决opencv算术运算报错问题。OpenCV(4.6.0) D:\a\opencv-python\opencv-python\opencv\modules\highgui\src\window.cpp:967: error: (-215:Assertion failed) size.width>0 && size.height>0 in function 'cv::imshow'的三种方法,详解!

m0_62026333的博客 3万+

宇瞳杯视讯镜头完成版(除公差/鬼像分析)

宇瞳杯视讯镜头完成版(除公差/鬼像分析)

weixin_72050316的博客 1047

opencv的读取文件很大一部分是不能读取含有中文的文件包括目录 ‘cv::Mat::locateROI‘

Exception in thread "main" CvException [org.opencv.core.CvException: cv::Exception: OpenCV(4.0.1) C:\build\master_winpack-bindings-win64-vc14-static\opencv\modules\core\src\matrix.cpp:757: error: (-215:Assertion failed) dims <= 2 && step[0] >

大哥的叔的博客 1661

半导体物理基础:载流子输运理论_(4).载流子浓度与费米能级

费米能级(Fermi Level)是描述半导体中电子和空穴能量分布的基准能级。在绝对零度下,费米能级以下的所有能级都被电子占据,费米能级以上的所有能级都是空的。随着温度的升高,电子会获得足够的能量跃迁到费米能级以上的能级,形成导带中的自由电子和价带中的空穴。费米能级在半导体中的位置取决于掺杂浓度和温度。对于本征半导体,费米能级位于禁带的中心;对于掺杂半导体,费米能级会偏移,具体位置取决于掺杂类型和浓度。载流子浓度(Carrier Concentration)是指半导体中自由电子和空穴的数量密度。

2401_87715305的博客 831

TCP/IP工业通信C#极致实现:工业级TcpClient封装 + 粘包拆包彻底解决 + 高频采集专项优化(完整可投产)

在工业自动化、PLC通信、工业传感器/模块、产线高频数据采集等场景中,TCP/IP是绝对主流的通信方式,相比串口/485,具备传输速率高、距离无限制、布线简单、抗干扰强的优势。但工业TCP通信和普通桌面TCP通信有本质区别,工业场景的核心要求是:✔高可靠:7×24小时不间断运行,断网自动重连、异常自动恢复,绝不崩溃;✔无数据错误:彻底解决「粘包、拆包、半包」问题(工业通信第一大坑,90%的通信异常源于此);✔高频采集优化:支持级别的高频读写PLC/设备,无卡顿、无丢帧、CPU占用极低;✔。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 859

[Bug集合]OpenCV Error: Assertion failed (confidence >0&&confidence 小于1) ptsetreg.cpp, line 178

吐槽:为什么标题里的小于号是非法字符呢??? “<<<<<<<<” Bug全内容: OpenCV Error: Assertion failed (confidence > 0 && confidence < 1) in run, file /home/eminbogen/下载/opencv-3.1.0/modu...

Eminbogen的博客 1452

UE5实现距离测量功能

UE5实现距离测量功能

专注GIS开发 6264

opencv学习(7) 一个锐化程序(有bug)

这个程序有bug,暂时还没找到原因:/* *本程序的主要功能是图像锐化 *2014年1月4日, */ #include #include #include using namespace cv; void imageSharpen(const Mat &image, Mat &result); int main() { Mat image = imread("D:/fodder/

laohu_tiger的专栏 856

08 RK3568 MAC TO MAC直连 RTL8367S mdio

本文:采用rk3568 gamc0 通过rgmii直连 交换芯片的mac口 通信方法为mdio。

qq_39451352的博客 3474

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

opencv 模板匹配, 已解决模板过大程序不工作的bug

#include <opencv2/opencv.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <iostream> #include <math.h> #ifdef _DEBUG #pragma...

weixin_30371469的博客 255

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

VS2015中findContours的BUG

如果有以下问题之一的,我已经发现解决办法。 1,在DEBUG模式下使用findContours能正常运行,在release模式下出错或闪退 2,在其他版本中findContours能正常运行,在VS2015+OPENCV249中出错 3,findContours在主函数中调用没问题,但是放在另一个函数中,然后主函数再调用这个函数出错或闪退。(release模式下) 为了弄清该问题,

照玄 9041

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

opencv-鼠标拖拽选取任意形状的ROI

程序还不完善 #include <iostream> #include<opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> using namespace cv; using namespace std...

小可爱的博客 1329

OpenCV提示is_block_type_valid(header->_block_use)

在实践OpenCV(版本是2.4.9)轮廓查找函数findContours函数时,发现有一个奇怪的bug,代码如下 #include <opencv2/imgproc/imgproc.hpp> #include <opencv2/highgui/highgui.hpp> #include <iostream> using namespace cv; usin...

weixin_42564720的博客 2172

用opencv读取图像鼠标点的像素,更正一个Bug

用opencv读取图像鼠标点的像素,其代码在网上流传很广,原出处据说是 SkySeraph,但是又发现其他说是自己原作。调试运行后内存很快耗尽,导致死机。经过查找,更正一个Bug。

663

OpenCV编译为静态库的补充

原来写的那篇文章实在过于简陋,而且日子一长,本人也没有再编译成功过。今天有兄弟相求,我便再次研究了一遍。现将结果再作一下总结。OpenCV现在的版本是1.0,已经很长时间没有更新了,不知道下个版本什么时候放出。其实,OpenCV的.dll文件并不多,如果想脱离这些.dll,使用静态库的话,那么一个小小的程序也差不多近2MB了。不过为了演示及发布方便,编译为静态库也算是一种需要吧。想编译成静

Jarod 的半个程序员 5262

openCV给图片加坐标轴

     为了给一张图片加坐标轴,调用openCV,用了两天的时间写了个简化版的版本,直到我看到了这个:点击打开链接 以及这个:http://answers.opencv.org/question/73233/how-do-you-plot-graphs-in-opencv-projects/好吧,两天写的其实没什么用。     为了给一张伪彩图上面加坐标轴,我首先参考了:https://blog...

qq_41361834的博客 1万+

OpenCV1.0静态库编译

转自:http://blog.csdn.net/jarodpku/archive/2008/10/15/3081298.aspx       OpenCV现在的版本是1.0,已经很长时间没有更新了,不知道下个版本什么时候放出。其实,OpenCV的.dll文件并不多,如果想脱离这些.dll,使用静态库的话,那么一个小小的程序也差不多近2MB了。不过为了演示及发布方便,编译为静态库也算是一种需要吧。

Augusdi的专栏 2251

Android开发Bug记录及解决方案(四)——深度学习&CV

开发场景:刚刚开始使用openCV,准备对图像进行灰化处理

xiaok的博客 1270

基于python-opencv实时手写数字识别

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 实时手写数字识别(基于视频)前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结 前言 程序参考这位大神 但是这篇文章里只有大致思路没,有对程序的具体讲解,另外也有一些opencv版本的问题,完善后的程序放在这 提示:以下是本篇文章正文内容,下面案例可供参考 一、pandas是什么? 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 二、使用步骤 1.引入库 代码如下(示例): im.

reason125132的博客 3699
上一篇: RGB和HSV颜色空间
下一篇: Opencv中的Bug(实现读入一个彩色视频文件并以灰度格式输出这个视频文件,学习opencv例2-10)
willian0621
博客等级 码龄17年 50粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值