先说结论:

opencv链接库使用错误。

1,确认VS工程属性中,opencv的链接库路径和版本正确。

VS2013应该使用vc12目录,VS2012对应vc11目录。debug版和release版要区分。

2,VS工程的运行库参数应该使用"/MDd“。

3,系统环境变量Path中,opencv的目录和VS工程设置的路径 应该一致。(本次问题的原因!)

---------------------------------------------------------------------------------------------------

开发环境:

VS2013+Opencv3.0

错误现象:

Debug时,出现如下窗口。

调查经纬:

通过调试,发现是在查找轮廓后,释放vector的地方报的错。写了个简单的代码试了一下。

#include <opencv2\opencv.hpp>

using namespace cv;
using namespace std; void test(Mat src)
{
vector<Mat> list;
split(src, list);
}
void main()
{
Mat src(300,300, CV_8UC3);
src = 0;
test(src);
return;
}

在test()结束时,也会发生同样的错误。

上网查了一下,一般原因有两个:

------------------------------------------------------------------------

1,Opencv库链接错;

比如,Debug模式下链接了Release的库(opencv中*.d.lib是Debug版,不带d的是release版);

或者,还有一部分是因为VS2012使用了2013的库(Opencv目录下vc12是VS2013的库,而不是VS2012的);

please check, if you're linking to debug dlls (ending in *.d.dll) in debug mode. also, if you link against "multithreaded-dll" c-runtime

2,VS工程属性设置错误。

VS的工程属性里面应该使用/MDd,不能使用/MTd;

------------------------------------------------------------------------

但是查了下,我的VS工程设置都没有问题。于是拿Depends查看一下编译后的exe文件,显示链接的Opencv库也是正确的。

又看了一下DLL库的属性,显示是链接到了vc11目录下。

突然想到,原来电脑上用的是VS2012,使用的是vc11目录下的opencv库,所以系统变量里面设置的也是cv11的路径。

改用VS2013后,虽然工程属性里面都改成了vc12目录,但是运行exe程序时,还是会根据PATH系统变量,去找到vc11目录下的库文件。

※ depends 在VS2008以后就不支持了,需要到官网下载:http://www.dependencywalker.com/

解决方法:

修改系统环境变量PATH,把opencv库的目录改为vc12目录下。重启VS,再次调试,错误消失。

※ 前提,要确认VS工程属性中的链接库设置正确。

参考链接:

http://answers.opencv.org/question/35437/problem-using-stdvector-as-a-parameter-in-some-opencv-functions/

https://stackoverflow.com/questions/26803975/debug-assertion-failed-pfirstblock-phead-using-opencv

https://stackoverflow.com/questions/21261709/debug-assertion-failed-expression-pfirstblock-phead-using-opencv-and-c-tr

Opencv出现“_pFirstBlock == pHead”错误的解决方法的更多相关文章

  1. Eclipse启动时发生An internal error occurred during: "Initializing Java Tooling".错误的解决方法

    问题描述: Eclipse启动时发生An internal error occurred during: "Initializing JavaTooling".错误的解决方法 解决 ...

  2. GCC-4.6.3编译linux2.6.32.12内核出现“重复的成员‘page’”错误的解决方法

    使用gcc4.6.3编译linux2.6.32.12内核出现错误如下: In file included from drivers/net/igbvf/ethtool.c:36:0: drivers/ ...

  3. Linux系统Vsftp 传文件出现 553 Could Not Create File错误的解决方法

    解决方法: 登录出现了这个错误提示:553 Could not create file SELinux设置如下 查看SELinux设置 [root@localhost ~]# getsebool -a ...

  4. [转]权限问题导致Nginx 403 Forbidden错误的解决方法

    权限问题导致Nginx 403 Forbidden错误的解决方法 投稿:junjie 字体:[增加 减小] 类型:转载 时间:2014-08-22 这篇文章主要介绍了权限问题导致Nginx 403 F ...

  5. ueditor上传大容量视频报http请求错误的解决方法

    故障现象: 当使用百度编辑器ueditor上传大容量视频或大容量图片的时候,编辑器报"http请求错误"的解决方法详解: 原因分析: 目前很多CMS整合了百度的ueditor编辑器 ...

  6. window10 安装出现the error code is 2503错误的解决方法

    window10 安装出现the error code is 2503错误的解决方法:  设置 C:\WINDOWS\TEMP的权限

  7. MyEclipse+Tomcat 启动时出现A configuration error occured during startup错误的解决方法

    MyEclipse+Tomcat 启动时出现A configuration error occured during startup错误的解决方法 分类: javaweb2013-06-03 14:4 ...

  8. Jquery中使用setInterval和setTimeout会提示缺少对象的错误,解决方法如下:

    直接在ready中调用其他方法,会提示缺少对象的错误,解决方法如下: 方法1. 应用jQuery的扩展可以解决这个问题. $(document).ready(function(){ $.extend( ...

  9. ASP.NET MVC 3 loginUrl自动变成Account/Login,并且发生404错误的解决方法

    http://www.cnblogs.com/think8848/archive/2011/07/08/2100814.html ASP.NET MVC 3 loginUrl自动变成Account/L ...

随机推荐

  1. springMvc(一)

    SpringMvc 1. 核心:DispatcherServlet 1.1作用:负责拦截请求并分派给相应的处理器处理 1.2配置DispatcherServlet(web.xml) 2.配置处理器映射 ...

  2. 笔记:Maven Web项目

    生成Web项目模块 生成Web项目模板和生成其他项目的模板一致,差别是指定模板的类型,执行命令如下: mvn archetype:generate -DarchetypeArtifactId=mave ...

  3. 【Python】 用户图形界面GUI wxpython I 基本用法和组件

    wxpython - 基本用法和组件 wxpython是python对跨平台GUI库wxWidgets的封装.wxWidgets是由C++写成的. wxpython被包装进了wx模块中,用它设计GUI ...

  4. MySQL的入门

    SHOW VARIABLES LIKE 'storage_engine%' #查看引擎 ALTER TABLE `studten` RENAME `student1` #修改表名 ALTER TABL ...

  5. JAVA连接SAP

    1.首先需要在SAP事务码SE37中新建一个可以被远程调用的RFC 事务码:SE37 新建一个函数组:输入事务码SE37回车后,来到函数构建器屏幕,到上面一排菜单栏:转到 -> 函数组 -> ...

  6. ECEF和大地坐标系的相互转化

    在阅读 RTKLIB的源码时,发现了ECEF和大地坐标系的相互转换的函数,大地坐标系(φ,λ,h)转成ECEF(X,Y,Z)与所看书籍(GPS原理与接收机,谢刚,电子工业出版社)的公式是一样的,而EC ...

  7. python全栈学习--day2

    一.in的使用 说明:in有相当多的用处,比如判断,循环for 等. 实例一:in 操作符用于判断关键字是否存在于变量中 s = '男人john' print('男孩' in s) print('男孩 ...

  8. x64系统安装ODAC问题经验分享

    64bit系统安装ODAC经验分享 背景: 最近项目里面有用到 WCF+Entity Framework+oracle 这个架构用过的朋友应该都知道,Entity Framework要通过ODAC的方 ...

  9. 软件工程网络15团队作业1——团队组队&展示

    Deadline: 2018-3-25 10:00PM,以提交至班级博客时间为准. 申请开通团队博客,并将团队博客地址发表在本次随笔的评论中 团队展示 根据5-6人的组队要求,每个队伍创建团队博客并发 ...

  10. Beta Scrum Day 5

    听说