VS2015处理opencv时报错

AnimateX 2018-07-11 11:15:48
问题背景:
我用vs2015 + opencv 341进行学习,然后按 x64 进行环境配置(341解压后没有x86),在看毛星云的书时,测试了几段代码。
在每一个代码完成后都会报错。


//--------------------------------------【程序说明】-------------------------------------------
// 程序说明:《OpenCV3编程入门》OpenCV3版书本配套示例程序03
// 程序描述:简单的OpenCV图像腐蚀操作
// 开发测试所用操作系统: Windows 7 64bit
// 开发测试所用IDE版本:Visual Studio 2010
// 开发测试所用OpenCV版本: 3.0 beta
// 2014年11月 Created by @浅墨_毛星云
// 2014年11月 Revised by @浅墨_毛星云
//------------------------------------------------------------------------------------------------

//-----------------------------------【头文件包含部分】---------------------------------------
// 描述:包含程序所依赖的头文件
//----------------------------------------------------------------------------------------------
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>

//-----------------------------------【命名空间声明部分】---------------------------------------
// 描述:包含程序所使用的命名空间
//-----------------------------------------------------------------------------------------------
using namespace cv;

//-----------------------------------【main( )函数】--------------------------------------------
// 描述:控制台应用程序的入口函数,我们的程序从这里开始
//-----------------------------------------------------------------------------------------------
int main( )
{
//载入原图
Mat srcImage = imread("1.jpg");
//显示原图
imshow("【原图】腐蚀操作", srcImage);
//进行腐蚀操作
Mat element = getStructuringElement(MORPH_RECT, Size(15, 15));
Mat dstImage;
erode(srcImage, dstImage, element);
//显示效果图
imshow("【效果图】腐蚀操作", dstImage);
waitKey(0);

return 0;
}

功能正常,但是完成后就弹出以下错误。

图像没法传:
0x00007FFEA86C0DC0 (ntdll.dll)处(位于 imageErode.exe 中)引发的异常: 0xC0000005: 读取位置 0x0000000000000010 时发生访问冲突。

如有适用于此异常的处理程序,该程序便可安全地继续运行。

输出位置显示:
0x00007FFEA86C0DC0 (ntdll.dll)处(位于 imageErode.exe 中)引发的异常: 0xC0000005: 读取位置 0x0000000000000010 时发生访问冲突。



...全文
402 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_42726971 2018-07-18
  • 打赏
  • 举报
回复
我是vs2015+opencv342的!谢谢
赵4老师 2018-07-13
  • 打赏
  • 举报
回复
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack即“调用堆栈”里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处,
看不懂时双击下一行,直到能看懂为止。
tiger波波 2018-07-12
  • 打赏
  • 举报
回复

#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>

#ifdef _DEBUG
#pragma comment(lib, "opencv_world341d.lib")
#else
#pragma comment(lib, "opencv_world341.lib")
#endif // DEBUG

int main()
{
using namespace cv;

Mat srcImage = imread("D:\\180604_145809.jpg");

imshow("111", srcImage);

Mat element = getStructuringElement(MORPH_RECT, Size(15, 15));
Mat dstImage;
erode(srcImage, dstImage, element);

imshow("222", dstImage);
waitKey(0);
return 0;
}


我这边没问题。
AnimateX 2018-07-12
  • 打赏
  • 举报
回复
谢谢
AnimateX 2018-07-12
  • 打赏
  • 举报
回复
引用 4 楼 AnimateX 的回复:
[quote=引用 3 楼 youyingbo 的回复:]

#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>

#ifdef _DEBUG
#pragma comment(lib, "opencv_world341d.lib")
#else
#pragma comment(lib, "opencv_world341.lib")
#endif // DEBUG


int main()
{
using namespace cv;

Mat srcImage = imread("D:\\180604_145809.jpg");

imshow("111", srcImage);

Mat element = getStructuringElement(MORPH_RECT, Size(15, 15));
Mat dstImage;
erode(srcImage, dstImage, element);

imshow("222", dstImage);
waitKey(0);
return 0;
}


我这边没问题。




我试过了 还是在运行完后 waitkey(0)后就弹出错误[/quote]

0x00007FFEA86C0DC0 (ntdll.dll)处(位于 configureTest.exe 中)引发的异常: 0xC0000005: 读取位置 0x0000000000000010 时发生访问冲突。

\\反汇编查看:
00007FFEA86C0DC0 cmp dword ptr [rbx+10h],0DDEEDDEEh

AnimateX 2018-07-12
  • 打赏
  • 举报
回复
引用 3 楼 youyingbo 的回复:

#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>

#ifdef _DEBUG
#pragma comment(lib, "opencv_world341d.lib")
#else
#pragma comment(lib, "opencv_world341.lib")
#endif // DEBUG


int main()
{
using namespace cv;

Mat srcImage = imread("D:\\180604_145809.jpg");

imshow("111", srcImage);

Mat element = getStructuringElement(MORPH_RECT, Size(15, 15));
Mat dstImage;
erode(srcImage, dstImage, element);

imshow("222", dstImage);
waitKey(0);
return 0;
}


我这边没问题。




我试过了 还是在运行完后 waitkey(0)后就弹出错误
赵4老师 2018-07-11
  • 打赏
  • 举报
回复
崩溃的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack即“调用堆栈”里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处,看不懂时双击下一行,直到能看懂为止
一、主要内容:OpenCV能够实现强大丰富的图像处理,但是它缺少一个能够支持它运行的界面。Csharp经过多年的发展,得益于它的“所见及所得”能力,非常方便编写界面。这两者如果能够“双剑合璧”,将有效帮助实际工作产出。本课着重推荐GOCW采用“Csharp基于CLR直接调用Opencv编写的算法库”方法,能够将最新的OpenCV技术引入进来,同保证生成程序的最小化。    为了进一步说明Csharp和OpenCV的结合使用,首先一个较为完整的基于winform实现答题卡识别的例子,相比较之前的实现,本次进一步贴近生产实际、内涵丰富,对算法也进行了进一步提炼。同我们对WPF下对OpenCV函数的调用、OpenCV.js的调用进行相关教授。       二、课程结构1、 EmguCV、OpenCVSharp和GOCW之间进行比较(方便代码编写、能够融入最新的算法、速度有保障、方便调试找错、拒绝黑箱化);2、视频采集模块的构建,视频采集和图像处理之间的关系;3、视频采集专用的SDK和“陪练”系统的介绍;4、在视频增强类项目中和图像处理项目中,算法的选择;5、Csharp界面设计、图片的存储和其他构建设计;6、较为完整的答题卡识别例子,兼顾界面设计和算法分析;8、WPF基于GOCW也同样可以基于GOCW实现算法调用;webForm虽然也可以通过类似方法调用,但是OpenCV.JS的方法更现代高效。9、关于软件部署的相关要点和窍门。       三、知识要点:1、基本环境构建和程序框架;2、CLR基本原理和应用方法;3、接入、采集、模拟输入;4、图像处理,通过构建循环采集图片;5、增强和实处理;6、基于投影等技术的答题卡识别算法;7、存储、转换;8、部署交付。        课程能够帮助你掌握Csharp调用Opencv的基本方法,获得相应框架代码和指导;从而进一步提升实现“基于图像处理”的解决方案能力。  

19,468

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 图形处理/算法
社区管理员
  • 图形处理/算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧