OpenCV 245首次出现错误

时间:2013-04-24 19:58:43

标签: opencv

我下载了opencv-2.4.5的源代码,我按照教程(在windows的opencv网站上)关于安装我自己的库的一切。好。我用cmake创建了opencv.sln文件,然后我用visual studio 2010专业人员打开它,然后点击构建解决方案,但只有9个成功。大多数200失败,大多数关于tbbd.lib的错误未找到,并且在LNK1104错误中找不到opencv_core245d.lib。我试图解决它多少天。我试图展示文件的方式......任何人都可以帮忙吗?这是关于我的论文。 (没有共同语言支持的构建)

3 个答案:

答案 0 :(得分:7)

收起

我花了大约15个小时才完成使用OpenCV完成的作业。这些时间中有14.5小时用于正确设置。我浏览了大约7个教程视频,几个设置指南,并阅读了数百个包含我所获得的相同错误的解决方案的帖子。所以我明白,简单地安装OpenCV并不是一项简单的任务,并且有几个步骤可以做到这一点。因此,如果您想使用openCV,这里有一个简单的教程。

了解链接的工作方式非常重要。有三种类型的文件,您包含的标头,包含这些函数的.dll,以及包含如何调用.dlls中的函数的说明的库。所以在这里,我们将添加lib文件,而不是仅将.dll添加为输入链接器中的依赖项。然后,我们将创建一个System Environment变量,该变量将告诉机器在引用相应的库文件时在哪里查找.dll文件。我们将创建一个属性表,以便在创建新项目时,只需单击"添加现有属性表"即可将设置添加到项目中。而不是添加一个新的。这样,我们再也不必经历这个了。

完全遵循这些步骤并确保可视化工作室在继续之前已关闭

注意:当引号中的文字带有复制所述文字的说明时,请不要包含引号。

  • 首先,简单的部分 - 从他们的网站下载OpenCV 2.4.5。 http://opencv.org/并单击OpenCV for Windows。它将下载OpenCV 2.4.5.exe。

安装OpenCV

  • 下载完成后,双击OpenCV-2.4.5.exe运行它。

  • 当询问提取文件的位置时,请在文本框中输入:" C:\"

  • C:\ opencv应该在完成时创建。在那里导航以确保。

设置环境变量

  • WINDOWS 8用户:

     - Right click the bottom left corner of your screen when the start icon pops up.
    
     - Click "Command Prompt (Admin)"
    
     - Type "SETX -m OPENCV_DIR C:\opencv\build" and press enter to set the opencv build directory as a System Environment Variable. Wait for the console to give you confirmation that it is set.
    
     - Right click the bottom left corner of your screen when the "Start" icon pops up. Click  System -> Advanced System Settings -> Environment Variables
    
     - In the "System Variables" list box, under the "Variable" collumn, find "Path".
    
     - Highlight the "Path" row and click edit.
    
     - Click in the "Variable Value" text box and hit the "end" key on your keyboard to scroll to the end of the line and add a semicolon.
    
     - Type the following: "C:\opencv\build\x86\vc10\bin;C:\opencv\build\x86\vc10" and click "OK". This will add the openCV bin directory to the system path.
    
  • WINDOWS 7用户:

    按照相同的步骤操作。唯一的区别是您如何进入命令提示符和系统设置。 Google如何在Windows 7上设置环境变量。

设置Visial Studio

注意:我强烈推荐VS2012 Professional,因为它具有高级语法突出显示功能,可以在编写C ++时使生活变得更加轻松。此版本可以从DreamSpark免费下载和安装。只需使用您的学生证即可。但是,VS2010和VS2012的步骤是相同的​​。

  • 打开Visual Studio

    • 点击"新项目"并且在" C ++"选择" Win32控制台应用程序"。
  • 当窗口打开时,单击"下一步",选中"清空项目",然后单击"完成"。在没有预编译标题的情况下开始使用EMPTY PROJECT非常重要。

  • 找到"物业经理。"默认情况下,它应该是有时很难错过的选项卡。或者,可以通过单击工具栏来访问它"查看" - > "物业经理"。

  • 右键单击"调试|的Win32"并选择"添加新项目属性表"。将其命名为" OpenCVProps"然后点击"添加"。

  • 右键单击新属性表并选择"属性"。

  • 从左栏开始,转到" C / C ++" - > "通用及#34;并在右侧的列表框中,选择"其他包含目录"然后点击"编辑"。

  • 添加以下三个目录:

    • " $(OPENCV_DIR)\包括"

    • " $(OPENCV_DIR)\包括\ OpenCV的"

    • " $(OPENCV_DIR)\包括\ opencv2"

  • 从左栏开始,转到" Linker" - > "通用及#34;并在右侧的列表框中,选择"其他图书馆目录"然后点击"编辑"。

  • 添加以下目录:

    • " $(OPENCV_DIR)\ 86 \ VC10 \ lib中"
  • 从左栏开始,转到" Linker" - > "输入"在右侧的列表框中,选择" Additional Dependenies"然后点击"编辑"。

  • 将以下.lib文件添加到依赖项中。您可以通过将这些复制并粘贴到该编辑框中来完成此操作。我故意不包含一个要点,以便您轻松复制粘贴这些。

    opencv_core245d.lib opencv_imgproc245d.lib opencv_highgui245d.lib opencv_ml245d.lib opencv_video245d.lib opencv_features2d245d.lib opencv_calib3d245d.lib opencv_objdetect245d.lib opencv_contrib245d.lib opencv_legacy245d.lib opencv_flann245d.lib

注意:如果构建要发布,这些步骤是相同的​​。但是,在复制和粘贴这些文件时,请删除“' d”。从他们每个人的结尾。 ' d'表示它是一个发布库并链接到发行版.dll。

  • 恭喜!困难的部分差不多完成了!点击"确定"关闭窗口。

创建和构建测试项目

  • 转到我们的解决方案资源管理器。这可以从工具栏通过" View" - > " Solution Explorer"

  • 右键点击"源文件"并选择"添加" - > " New Item"。

  • 选择" C ++文件(.cpp)"并命名文件" main.cpp"。点击"添加"。

  • 复制并粘贴以下程序,然后按" F7"在键盘上观看屏幕的左下角,看看你是否得到了一个成功的" Build Succeeded"信息。如果是这样,在编译和运行之前只剩下一步!如果没有,请回溯您的步骤,或在下面发表评论,也许我可以提供帮助。

    #include <opencv\cv.h>
    #include <opencv\highgui.h>

    int main(int argc, char* argv) 
    {  // openCV .image object
        cv::Mat inputImage;

        //Create a Window
        cv::namedWindow("window",1);

        // Initialize our image.
        inputImage = cv::imread("Lenna.png");

        // Always check to make sure that image has data.
        if(inputImage.empty())
        {
            std::cout << "Image Failed to Load.";
            return -1;
        }
        else
        {
            // All is well, display me.
            cv::imshow("window",inputImage);

            // Wait for user to press a key to exit.
            cvWaitKey(0);
        }

        return 0; 
    } 
  • 如果构建成功,那么剩下的就是将图像添加到您的文件夹中。这个位置非常重要。我已经复制了我放置的Directoy。遵循相同的目录模式。

    • &#34; C:\ Users \ Josh \ Documents \ Visual Studio 2012 \ Projects \ ConsoleApplication3 \ ConsoleApplication3 \ Lenna.png&#34;
  • 现在点击&#34; Ctrl + F5&#34;构建,编译和运行以在窗口中观察您的图像!!

* 如果您有WEBCAM *

  • 复制并粘贴以下代码以检查OpenCV是否正常工作而无需添加图像。这很有用,因为如果上面的代码不起作用,但是这段代码没有用,那么你知道你把图像放在了错误的文件夹中。
    #include 
    #include 

    int main(int argc, char* argv) 
    {  // openCV .image object
        cv::Mat image;

        //Create a Window
        cv::namedWindow("window",1);

        // Create the capture object.
        cv::VideoCapture device;

        // Open your webcam.
        device.open(0);

        while (1)
        {
            // Read data from your device and store it to the image frame.
            device >> image;

            // Always check to make sure that image has data.
            if(image.empty())
            {
                std::cout<< "Image Failed to Load.";
                return -1;
            }
            else
            {
                // All is well, display me.
                cv::imshow("window",image);

                // Wait for user to press a key to exit.
                cvWaitKey(33);
            }
        }

        return 0; 
    } 

快乐编码!!如果有什么东西不起作用,请告诉我,以便我可以解决它!

答案 1 :(得分:6)

快速回答

我已经设法使用教程here编译了支持TBB的OpenCV。

规格:Vis​​ual Studio 2012 / Win 7(64位)/ OpenCV 2.4.5 / CUDA 5

我已下载最新的TBB zip并将其解压缩到 C:/ src / OpenCV / dep (如上面链接的教程中所述)。

您必须在CMake中使用以下TBB设置(根据您的文件路径进行调整):

TBB_LIB_DIR       ::  C:/src/OpenCV/dep/tbb41_20130314oss/lib/intel64/vc11
TBB_INCLUDE_DIRS  ::  C:/src/OpenCV/dep/tbb41_20130314oss/include/
TBB_STDDEF_PATH   ::  C:/src/OpenCV/dep/tbb41_20130314oss/include/tbb/tbb_stddef.h
WITH_TBB          ::  checked
BUILD_TBB         ::  unchecked

更多信息

最初,我还想安装支持CUDA 5的OpenCV,但似乎CUDA 5与VS2012不兼容。这是编译时遇到的错误 OpenCV的:

Building NVCC (Device) object modules/core/CMakeFiles/cuda_compile.dir/src/cuda/Debug/cuda_compile_generated_matrix_operations.cu.obj
nvcc : fatal error : nvcc cannot find a supported cl version. Only MSVC 9.0 and MSVC 10.0 are supported

好消息是您正在使用VS2010,它可以与CUDA一起使用,如建议here。 VS2012可以设置为使用CUDA创建项目,但目前没有办法(AFAIK)编译OpenCV并支持VS2012的CUDA(有关详细信息,请阅读this)。

总之,需要CUDA支持的人应该使用VS2010编译和使用OpenCV。

此外,在编译OpenCV时,我收到以下错误:

error C3859: virtual memory range for PCH exceeded; please recompile with a command line option of '-Zm118' or greater
fatal error C1076: compiler limit : internal heap limit reached; use /Zm to specify a higher limit

我使用了here指令来最终编译OpenCV。我创建了一个属性表,其中/Zm130作为 Common Properties&gt;中的附加选项。 C / C ++&gt;命令行并添加它  所有生成的OpenCV项目。

供您参考,我还附上我使用的CMake配置和 CMakeCache.txt 文件(因为我正在使用VS2012,CUDA被禁用):

希望这有帮助,如果您需要我详细说明任何步骤,请发表评论。

答案 2 :(得分:0)

我再次将opencv-master,opencv-2.4.5和opencv-2.4.7安装到我的新笔记本电脑上。返回的OpenCV-2.4.7的imread函数总是为null,但是C-cvImageLoad运行良好,opencv-master的cvLoadImage不能正常工作cvImageLoad或者我错过了什么。但是TBB的目录必须是... / bin / ia32而不是intel64我的操作系统是64位但是VS201x 32位这是我的错误。我得到缝合和gpu错误,视觉工作室正在讲述错误,这通常是内存分配限制错误,我做了同样的事情,比如你所说的@dilgenter,现在它运行良好但只有2.4.5和python_d。可能会出现lib错误这在调试模式下不是问题我从很多论坛网站上读过这个。我将尝试找到为什么2.4.7的imread返回null Mat元素。但现在我太忙了,这是