先说结论:

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. vue零基础学习--搭建项目

    一.script引入(联系使用,小型项目) 直接下载并用 <script> 标签引入,Vue 会被注册为一个全局变量. <script src="https://cdn.j ...

  2. 面试题中遇到的算法与js技巧

    近一周在忙着面试,本月第一次更博,甚是想念. 基本上大公司都会要求一些算法或者数据结构类的东西,这方面自己还不是很精通,只能一步一个脚印来积累了. 1.查询字符串获取对象数据,可自行根据需求选择格式, ...

  3. Java8 中 ConcurrentHashMap工作原理的要点分析

    简介: 本文主要介绍Java8中的并发容器ConcurrentHashMap的工作原理,和其它文章不同的是,本文重点分析了不同线程的各类并发操作如get,put,remove之间是如何同步的,以及这些 ...

  4. java-线程实现方式

    实现方式: 1,继承Thread类 public class ThreadTest extends Thread { @Override public void run() { System.out. ...

  5. ionic start 创建ionic项目报错,及解决过程

    问题描述: 前一次创建利用命令行创建ionic项目一次性成功,第二次没有运行: $ npm install -g ionic cordova 直接运行: ionic start ionicDemo 出 ...

  6. Oracle的用户,权限以及角色

    一.用户 1.创建用户 创建用户u密码为aa. SQL> create user u identified by aa; 2.为用户赋予权限 这个用户还不能连接数据库,必须为其赋予一些权限才可以 ...

  7. 关于hadoop集群下Datanode和Namenode无法访问的解决方案

    HDFS架构 HDFS也是按照Master和Slave的结构,分namenode,secondarynamenode,datanode这几个角色. Namenode:是maseter节点,是大领导.管 ...

  8. 启动django应用报错 “Error: [WinError 10013] 以一种访问权限不允许的方式做了一个访问套接字的尝试。”

    启动django应用时报如下错误 "Error: [WinError 10013] 以一种访问权限不允许的方式做了一个访问套接字的尝试." 网上查了一下,是8000端口被其他程序占 ...

  9. oralce数据库常用到的一些sql命令(加字段注释,修改数据之类)

    最近开始接触oralce,整理了一下最近使用 pl/sql 常用到的一些sql命令 1.修改表中的数据 编写查询语句及条件,然后加上"FOR UPDATE","FOR U ...

  10. Alpha冲刺No.2

    冲刺Day2 一.站立式会议计划 分组讨论研究:较好的掌握MYSQL的使用,以及Android Studio图形化界面设计的学习同步进行. 完成设计数据库架构,进阶版. 登录.注册界面的设计. 能从同 ...