【OpenCV笔记 11】VS2013中运行OpenCV 3.0时常见错误及解决方法


===========2016年10月29日更新=================

本次在笔记本中安装VS2015和OPENCV 3.1.0参照毛新云的教程的出现了诸多问题,

最后按照这篇博客的步骤才算安装成功!

==========================================

常见案例、错误及解决方法:

=====================================================================

案例:编译VC++程序的时候出现如下提示警告:
warning C4819: The file contains a character that cannot be represented in the current code page (936). Save the file in Unicode format to prevent data loss

警告解释:
因为只是一个warning,不影响正常编译,所以并没有引起大家多大的关注。我一开始的时候也是如此。但是后来出现的次数多了,发现这个警告和在程序Debug的时候
无法停在断点,刷刷刷就过去了根本无法进行Debug。而罪魁祸首就是这个warning,改正了这个warning就能进行Debug了。下面讲述我是怎么消除这个警告的。
这个警告的意思是:在该文件中有一个或多个字符不是Unicode字符!要求把这个字符变成Unicode字符。
难题:在编译信息里并没有提示是哪个字符,或者是在哪一行里出现的该字符。查找起来非常的难,甚至是不可能的任务!


解决方法:

打开出现warning的文件(在output栏双击警告处),Ctrl+A全选,然后在文件菜单:file->advanced save options ,在弹出的选项中选择新的编码方式为:UNICODE codepage 1200 ,点击确定,问题就解决了。

=======================================================================

案例:无法启动此程序 因为计算机中丢失opencv_core310d.dll,或者类似下面的扩展文件。

opencv_calib3d310d.dll
opencv_core310d.dll
opencv_features2d310d.dll
opencv_flann310d.dll
opencv_highgui310d.dll
opencv_imgcodecs310d.dll
opencv_imgproc310d.dll
opencv_ml310d.dll
opencv_objdetect310d.dll
opencv_photo310d.dll
opencv_shape310d.dll
opencv_stitching310d.dll
opencv_superres310d.dll
opencv_ts310d.dll
opencv_video310d.dll
opencv_videoio310d.dll
opencv_videostab310d.dll

解决方法:

参见本人上的一篇博客的文末:OpenCV3.0.1源码编译及自带样例工程代码编译

===========================================================================

案例一:IplImage格式转换成Mat格式  

//使用Mat的构造函数:
Mat::Mat(const IplImage* img, bool copyData=false);默认情况下copyData为false
IplImage* srcImg = cvLoadImage("Lena.jpg");
//注意:以下三种效果一致,均为浅拷贝
Mat M(srcImg);
Mat M(srcImg, false);
Mat M = srcImg;
//注意:当将参数copyData设为true后,则为深拷贝(复制整个图像数据)
Mat M(srcImg, true);

错误提示:

error C2664: 'cv::Mat::Mat(const cv::cuda::GpuMat &)' : cannot convert argument 1 from 'IplImage *' to 'const cv::Mat &'

Reason:cannot convert from 'IplImage *' to 'const cv::Mat'

解决方法:

Mat img;

IplImage *frame=&(IplImage)img;//frame为IplImage 类型,img为Mat类型

==========================================================================

案例二:首次运行没有错误,再次运行且没有修改代码时出现下列错误

错误提示:

LINK : fatal error LNK1168: cannot open C:\Users\Administrator\Documents\Visual Studio 2013\Projects\OpenCv3\C7_OpenCV\Debug\C7_OpenCV.exe for writing

解决方法:意思不能打开xxx.exe文件用于改写,说明xxx.exe文件正在运行,所以只要关闭第一次运行时生成的图形窗口即可,这个问题我遇到过多次,每次都是重启VS2013很麻烦,偶然试着将先前生成的图形窗口关闭后再次运行即恢复正常。

================================================================

案例三:OpenCV3.1 CMake编译报错Failed to download opencv_ffmpeg.dll

解决方案: 转自http://stackoverflow.com/questions/32932915/opencv-3-0-0-configure-fails-ffmpeg-not-downloaded/33095689#33095689

1、将opencv\build\bin\下的opencv_ffmpeg310.dll改名为opencv_ffmpeg.dll;

opencv_ffmpeg310_64.dll改名为opencv_ffmpeg_64.dll,然后拷贝到opencv\sources\3rdparty\ffmpeg\

2、将opencv\sources\3rdparty\ffmpeg\ffmpeg.cmake文件内容用记事本修改为

[plain] view plain copy
 
  1. set(HAVE_FFMPEG 1)  
  2. set(HAVE_FFMPEG_CODEC 1)  
  3. set(HAVE_FFMPEG_FORMAT 1)  
  4. set(HAVE_FFMPEG_UTIL 1)  
  5. set(HAVE_FFMPEG_SWSCALE 1)  
  6. set(HAVE_FFMPEG_RESAMPLE 0)  
  7. set(HAVE_GENTOO_FFMPEG 1)  
  8.   
  9. set(ALIASOF_libavcodec_VERSION 56.41.100)  
  10. set(ALIASOF_libavformat_VERSION 56.36.101)  
  11. set(ALIASOF_libavutil_VERSION 54.27.100)  
  12. set(ALIASOF_libswscale_VERSION 3.1.101)  
  13. set(ALIASOF_libavresample_VERSION 2.1.0)  
3、点击执行Cmake-gui

==================================================================

案例四:OpenCV3.0 CMake生成工程项目过程中遇到下载ippicv_windows_20151201.zip错误

解决办法
(1)手动下载ippicv_windows_20141027.zip
下载网址在这里:http://osdn.jp/projects/sfnet_opencvlibrary/downloads/3rdparty/ippicv/ippicv_windows_20141027.zip/

最新版本:ippicv_windows_20151201.zip 

(2)将上面的ZIP文件放在OpenCV300的目录下面,
笔者的路径是下面这个:D:\OpenCV300\opencv\sources\3rdparty\ippicv\downloads\windows-b59f865d1ba16e8c84124e19d78eec57
(3)打开CMake,重新生成工程文件即可。

(4)最终配置成功如下图:


你可能感兴趣的:(OpenCV,opencv,错误,c++,配置,visual,studio)