windows 7下安装及配置:
参考链接:
VS 2008下编译OpenCV项目
参考链接:
VS2008下运行代码还有如下问题:
丢失MSVCP100D.dll MSVCR100D.dll
出现这个原因是由于2.4.7版本仅仅提供了VS2010和VS2012编译的dll,没有提供VS2008编译版本,而在VS2008的环境中,是不存在MSVCP100D.dll MSVCR100D.dll这2个dll的。
解决方法有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
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
方法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 时发生访问冲突
调试,查看信息:
msvcr100d.dll有问题?
原来是我用VS2008编译的工程用的是VS2010生成的dll,看来盲目添加MSVCP100D.dll MSVCR100D.dll是不行的。
解决方案:
1. 使用较旧的opencv(例如opencv2.3就有用VS2008编译的动态链接库)
2. 在自己的环境下(VS2008)重新编译opencv2.4.7?暂时没有测试。