在Visual Studio 2008上安装OpenCV 2.4.5

5

我在使用Visual Studio 2008(专业版)时,尝试使用OpenCV遇到了一些困难。我相信我已经完成了运行OpenCV示例所需的一切步骤,但它由于运行时错误而崩溃。这让我疯狂,希望有人能够帮助。

但首先,请让我们了解一下我的安装过程。

我的安装过程

  1. 从sourcefourge.net下载了OpenCV 2.4.5

  2. 当提示的时候,我在上面链接下载的.exe文件中选择“Z:\ Games instalados \ OpenCV”作为“解压到”选项。

  3. 打开“控制面板” -> “系统” -> “高级系统设置”,然后单击“高级”选项卡中的“环境变量”。在“系统变量”框中,我突出显示了“Path”,然后单击“编辑...”。在新窗口中,我在“变量值”中添加了我的安装目录,并在其前面加上“;”,即“; Z:\ Games instalados \ OpenCV \ opencv \ build \ x86 \ vc11 \ bin”(不包括双引号)。下面是截图:screenshot

  4. 在Visual Studio 2008中创建一个新项目:文件-> 新建->项目...,选择“其他语言”->“Visual C ++ ->“Win32”作为项目类型;“Win32 Console Application”作为模板。new project在新窗口中单击“下一步”,然后选择“控制台应用程序”,“空项目”,然后选择“完成”。new window
  5. 在“解决方案资源管理器”中,右键单击我的程序,然后选择“属性”。然后选择“配置属性” -> “C / C ++” -> “常规”,并在“附加包含目录”中添加:
    • Z:\ Games instalados \ OpenCV \ opencv \ build \ include
    • Z:\ Games instalados \ OpenCV \ opencv \ build \ include \ opencv
    • Z:\ Games instalados \ OpenCV \ opencv \ build \ include \ opencv2 <img alt =“Additional Include”src =“https://s23.postimg.org/6yad3hvbf/additional_include_directories.jpg”/>
  6. 现在在“配置属性” ->“C / C ++” ->“链接器” ->“常规”中,在“其他库目录”中添加了“Z:\ Games instalados \ OpenCV \ opencv \ build \ x86 \ vc11 \ lib”。Additional Library
  7. 现在在“配置属性” ->“C / C ++” ->“链接器” ->“输入”中,在“其他依赖项”中添加了:
    • opencv_calib3d245.lib
    • opencv_contrib245.lib
    • opencv_core245.lib
    • opencv_features2d245.lib
    • opencv_flann245.lib
    • opencv_gpu245.lib
    • opencv_highgui245.lib
    • opencv_imgproc245.lib
    • opencv_legacy245.lib
    • opencv_ml245.lib
    • opencv_nonfree245.lib
    • opencv_objdetect245.lib
    • opencv_photo245.lib
    • opencv_stitching245.lib
    • opencv_superres245.lib
    • opencv_ts245.lib
    • opencv_video245.lib
    • opencv_videostab245.lib
    • opencv_calib3d245d.lib
    • opencv_contrib245d.lib
    • opencv_core245d.lib
    • opencv_features2d245d.lib
    • opencv

      问题

      1. 项目构建成功,“Build succeeded”。
      2. “Debug” -> “Start Debugging”,出现以下情况: 错误 http://s8.postimg.org/wdkubk5o3/the_error.jpg 错误的完整尺寸图片:http://s8.postimg.org/wdkubk5o3/the_error.jpg

      我也尝试了霍夫线样例,但它也不能正常工作(即使图像与.exe文件在同一文件夹中,imread()也无法找到图像)。

      非常感谢任何帮助。

      如果我的安装步骤有些不够清晰,请留言。

      为什么这个问题适合stackoverflow.com

      我详细描述了使用Visual Studio 2008与最新版本OpenCV的全面安装过程。如果有人解决了这个问题,我们将拥有一个完整、可用的教程,供任何有相同需求的人使用,并且(由于安装程序的深度)可能是安装大多数Visual Studio版本的最新OpenCV的通用指南(不仅限于2008版,因为教程不会有太大变化,读者可以轻松地适应它)。


安装最新的OpenCV并不仅限于Visual Studio 2008,因为教程变化不大,读者可以轻松适应。在OpenCV网站上维护的OpenCV安装指南有何问题? - GPPK
那是我的第一种方法。但结果仍然是一样的。 - JLagana
请编辑您的帖子,以便正确显示出现的错误。 - Bull
图片太小了吗?您可以访问:http://s8.postimg.org/wdkubk5o3/the_error.jpg - JLagana
1
由于标题、所有安装信息和vc9与vc11问题,我错过了这个问题是特定于opencv\samples\cpp\cout_mat.cpp的。如果我尝试cv::Mat m; cout << m;,我会得到相同的错误,使用opencv 2.4.4。这似乎是一个opencv问题 - 在http://answers.opencv.org/question/6094/using-cout-with-mat-object/上找到了另一个具有相同问题的人。他们重建了opencv,显然解决了问题。 - Bull
你好,我想问一下你的程序是否能够在Microsoft Visual Studio 2008中使用OpenCV with vc11?我的程序在使用vc11时出现了错误,我看到有些人说对于Microsoft Visual Studio 2008,必须使用vc9。 - AuroraBlaze
2个回答

1
我建议,如果您想测试opencv的正确安装,请在opencv中加载一个简单的.jpg图像并显示它。如果这可以运行,则可以开始调试程序崩溃的原因。您可以通过逐步启用cout来调试它。也许首先只需在示例cout_mat.cpp中启用默认cout并注释其余部分。
这是一个简单的加载程序,您可以尝试测试您的安装。
int main(int argc, char*argv[])
{

    cvNamedWindow("My_Win", CV_WINDOW_AUTOSIZE);
    IplImage *img = cvLoadImage("C:\\vid_an2\\Desert.jpg", CV_LOAD_IMAGE_UNCHANGED );

    std::cout<<"Info About Image"<<std::endl;

    std::cout<<"Size of Image "<<img->nSize<<std::endl;
    std::cout<<"Image channels "<<img->nChannels<<std::endl;
    std::cout<<"Image Width "<<img->width<<std::endl;
    std::cout<<"Image Height "<<img->height<<std::endl;
    std::cout<<"Image Depth "<<img->depth<<std::endl;
    std::cout<<"Image WidhtStep "<<img->widthStep<<std::endl;
    std::cout<<"Image Size "<<img->imageSize<<std::endl;

    cvShowImage("My_Win", img);

    cvWaitKey(0);

    // Free the resources.
    cvDestroyAllWindows();
    cvReleaseImage(&img);
return 0;
}

这段代码运行良好。这是否无疑意味着我正确安装了OpenCV?因为我仍然无法运行OpenCV的cout_mat.cpp示例。 - JLagana
换句话说,我应该开始在“cout_mat.cpp”中寻找错误吗?因为我的安装工作正常? - JLagana
我快速尝试了cout_mat.cpp。我认为问题不在于opencv的安装。但很可能与operator<<有关,它用于直接在控制台上显示Mat对象。如果禁用所有将Mat对象放入cout语句的代码,程序可以正常运行。可能是<<运算符重载的问题。 - praks411
我有一个小问题,我正在尝试安装OpenCV 2.4.13,它只包括vc11和vc12,而我使用的是Visual Studio2010,所以我可以在Visual Studio2010中使用vc11吗? - Sara

1

由于您使用的是VS2008,请将Z:\Games instalados\OpenCV\opencv\build\x86\vc11更改为Z:\Games instalados\OpenCV\opencv\build\x86\vc9。 vc11文件夹适用于VS2012,vc9适用于VS2008。


更改了代码之后,尝试运行cout_mat.cpp仍然显示相同的运行时错误。 - JLagana
更改路径环境变量后,您是否重新启动 Visual Studio 以便它获取新的环境(实际上,由于 DLL 加载,您可能需要重新启动计算机)?您能否使用调试器逐步跟踪到访问冲突发生的位置? - Bull

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接