【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
解決方法:
===========================================================================
案例一:IplImage格式轉換成Mat格式
//使用Mat的建構函式: Mat::Mat(const IplImage* img, bool copyData=false);預設情況下copyData為falseIplImage* 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很麻煩,偶然試著將先前生成的圖形視窗關閉後再次執行即恢復正常。
================================================================
解決方案: 轉自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檔案內容用記事本修改為
- set(HAVE_FFMPEG 1)
- set(HAVE_FFMPEG_CODEC 1)
- set(HAVE_FFMPEG_FORMAT 1)
- set(HAVE_FFMPEG_UTIL 1)
- set(HAVE_FFMPEG_SWSCALE 1)
- set(HAVE_FFMPEG_RESAMPLE 0)
- set(HAVE_GENTOO_FFMPEG 1)
- set(ALIASOF_libavcodec_VERSION 56.41.100)
- set(ALIASOF_libavformat_VERSION 56.36.101)
- set(ALIASOF_libavutil_VERSION 54.27.100)
- set(ALIASOF_libswscale_VERSION 3.1.101)
- set(ALIASOF_libavresample_VERSION 2.1.0)
==================================================================
案例四:OpenCV3.0 CMake生成工程專案過程中遇到下載ippicv_windows_20151201.zip錯誤
最新版本:
(2)將上面的ZIP檔案放在OpenCV300的目錄下面,
筆者的路徑是下面這個:D:\OpenCV300\opencv\sources\3rdparty\ippicv\downloads\windows-b59f865d1ba16e8c84124e19d78eec57
(3)開啟CMake,重新生成工程檔案即可。
(4)最終配置成功如下圖: