天天看點

opencv+VS2008安裝配置

windows 7下安裝及配置: 參考連結: http://docs.opencv.org/doc/tutorials/introduction/windows_install/windows_install.html

VS 2008下編譯OpenCV項目 參考連結: http://docs.opencv.org/doc/tutorials/introduction/windows_visual_studio_Opencv/windows_visual_studio_Opencv.html

VS2008下運作代碼還有如下問題: 丢失MSVCP100D.dll MSVCR100D.dll

出現這個原因是由于2.4.7版本僅僅提供了VS2010和VS2012編譯的dll,沒有提供VS2008編譯版本,而在VS2008的環境中,是不存在MSVCP100D.dll MSVCR100D.dll這2個dll的。

opencv+VS2008安裝配置

解決方法有3種:

方法1,将改成項目工程改成release版本編譯運作,不要忘記修改opencv連結庫的名字(字尾沒有d的lib),如下所示: opencv_core247.lib

opencv_imgproc247.lib

opencv_highgui247.lib

opencv_ml247.lib

opencv_video247.lib

opencv_features2d247.lib

opencv_calib3d247.lib

opencv_objdetect247.lib

opencv_contrib247.lib

opencv_legacy247.lib

opencv_flann247.lib

方法2,下載下傳MSVCP100D.dll MSVCR100D.dll并将其放在c:\windows\system32下(全局有效),或者是放在目前目錄下(僅對目前項目有效),建議用後者。( 實踐證明,這個方法存在很大的問題,會導緻程式運作異常,後面我會提到這個問題)。

參考連結: Win7下OpenCV2.4.3結合VS2012的配置

方法3,在VS 2008裡面重新編譯opencv,暫時沒有測試該方法。

imread導緻程式異常退出(使用cvLoadImage正常) VS 2008 Debug + opencv 2.4.7 測試程式:

#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main( int argc, char** argv )
{
	Mat image;
	image = imread("../opencv-logo.png", CV_LOAD_IMAGE_COLOR);   // Read the file

	if(! image.data )                              // Check for invalid input
	{
		cout <<  "Could not open or find the image" << std::endl ;
		return -1;
	}

	namedWindow( "Display window", CV_WINDOW_AUTOSIZE );// Create a window for display.
	imshow( "Display window", image );                   // Show our image inside it.

	waitKey(0);                                          // Wait for a keystroke in the window
	return 0;
}
           

(已經解答)類似問題: http://stackoverflow.com/questions/11989127/opencv-2-4-2-imread-function-causing-runtime-error

報錯: opencv_debug.exe 中的 0x0036299f 處未處理的異常: 0xC0000005: 讀取位置 0xcccccccc 時發生通路沖突

調試,檢視資訊:

opencv+VS2008安裝配置

msvcr100d.dll有問題?

原來是我用VS2008編譯的工程用的是VS2010生成的dll,看來 盲目添加MSVCP100D.dll MSVCR100D.dll是不行的。

解決方案: 1. 使用較舊的opencv(例如opencv2.3就有用VS2008編譯的動态連結庫)

opencv+VS2008安裝配置

2. 在自己的環境下(VS2008)重新編譯opencv2.4.7?暫時沒有測試。