2013-04-24 32 views
6

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

+0

听起来像你的cmake配置你建立它支持tbb库(tbb - >线程构建模块),但无法找到它(你或者没有它,或者路径错误)。假设您通过cmake GUI配置了cmake版本,请尝试取消选中tbb选项并重新生成.sln文件 – alrikai 2013-04-24 20:27:26

+0

谢谢@alrikai,但我在opencv-2.4.5/dep/tbb中添加了tbb ....并且我已经在cmake中显示它像其他示例openexr,eigen,qt,cuda,带有主传感器的openni,带有numpy和狮身人面像的python,clAmdBlas和Fft ...以及使用cmake GUI执行这些操作。并用路径编辑器添加tbb的bin路径 – 2013-04-24 20:38:20

+0

tbb .lib文件的路径是否正确? – alrikai 2013-04-24 21:18:20

回答

6

快速解答

我已成功编译OpenCV的使用教程here TBB支持。

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

我已下载最新TBB拉链和它提取到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)通过CUDA支持VS2012编译OpenCV(有关更多信息,请参阅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的。我在公共属性> C/C++>命令行中创建了一个/Zm130作为附加选项,并将其添加到 到所有生成的OpenCV项目中。

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

希望这可以帮助和请评论,如果你需要我详细说明任何步骤。

+0

我要去试试@dilgenter,我会在这里发布它,谢谢 – 2013-08-05 22:30:13

+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错误,Visual Studio告诉你可以使用你所说的@dilgenter的错误,现在它运行良好,但只是2.4.5,我会试着找出为什么2.4.7的imread返回null Mat元素。现在发髻我太忙了 – 2013-12-21 09:52:17

7

收起

我花了好15小时,以便让使用OpenCV的作业完成。花费了这些时间中的14.5分钟才刚刚完成设置。我浏览了大约7个教程视频,几个设置指南,并阅读了数百个包含解决方案的帖子,以获得与我得到的相同的错误。所以我明白,简单地安装OpenCV并不是一项简单的任务,并且有几个步骤可以执行此操作。所以,如果你想使用openCV,那么这里是一个简单的教程。

重要的是了解事情如何工作尽可能连接。有三种类型的文件,您包含的标题,包含函数的.dll以及包含有关如何调用.dll中的函数的说明的库。因此,在这里,我们将添加lib文件,而不是在输入链接器中仅添加.dlls作为依赖项。然后,我们将创建一个系统环境变量,告诉机器在引用相应的库文件时在哪里查找.dll文件。我们将创建一个属性表,以便当我们创建一个新项目时,我们可以通过点击“添加现有属性表”而不是添加一个新项目来简单地将设置添加到我们的项目中。这样,我们再也不需要经过这个了。

请按照下列步骤EXACTLY并确保Visual Studio是关闭之前持续关

注:当文本在引号中给出的指示进行复制上述文本,不包括引号。

  • 首先,容易的部分 - 从他们的网站下载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工作室

注:我强烈推荐,因为先进的语法高亮编程C++时,使生活变得更轻松VS2012专业。这个版本可以从DreamSpark免费下载和安装。只需制作并记录您的学生证。但是,VS2010和VS2012的步骤是相同的​​。

  • 打开Visual Studio

    • 单击 “新建项目”,并在 “C++”,选择 “Win32控制台应用程序”。
  • 当窗口打开时,单击“下一步”,选中“空白项目”,然后单击“完成”。在没有预编译头文件的情况下,从一个EMPTY PROJECT开始非常重要。

  • 找到“属性管理器”。默认情况下,它应该是一个有时很难错过的选项卡。也可以通过点击工具栏的“查看” - >“物业经理”进行访问。

  • 右键单击“Debug | Win32”并选择“添加新项目属性表”。将其命名为“OpenCVProps”,然后单击“添加”。

  • 右键单击您的新属性表,然后选择“属性”。

  • 从左栏转到“C/C++” - >“常规”,在右边的列表框中选择“Additional Include Directories”并单击“Edit”。

  • 添加以下三个目录:

    • “$(OPENCV_DIR)\包括”

    • “$(OPENCV_DIR)\包括\ OpenCV的”

    • “$(OPENCV_DIR )\ include \ opencv2“

  • 从le ft栏,转到“Linker” - >“General”,在右侧的列表框中选择“Additional Library Directories”并点击“Edit”。

  • 添加以下目录:

    • “$(OPENCV_DIR)\ 86 \ VC10 \ LIB”
  • 从左侧栏,进入 “链接” - > “输入”并在右侧的列表框中选择“Additional Dependenies”并单击“Edit”。

  • 将下列.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。

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

创建和到我们的解决方案资源管理建立一个测试项目

  • 头。这可以从通过工具栏中的“查看”集中 - >“解决方案资源管理”

  • 右键点击“源文件”,然后选择“添加” - >“新建项目”。

  • 选择 “C++文件(的.cpp)”,并命名该文件 “的main.cpp”。点击“添加”。

  • 复制并粘贴以下程序,并在键盘上按下“F7”并观看屏幕左下角以查看是否收到“Build Succeeded”消息。如果是这样,在编译和运行之前只剩下一步!如果没有,请回顾你的步骤,或在下面评论,也许我可以提供帮助。

 
    #include &ltopencv\cv.h> 
    #include &ltopencv\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。按照相同的目录模式。

    • “C:\用户\乔希\文档\的Visual Studio 2012 \项目\ ConsoleApplication3 \ ConsoleApplication3 \ Lenna.png”
  • 现在按下 “Ctrl + F5”,以建立,编译和运行以观察窗口中的图像!

* 如果你有一个摄像头 *

  • 复制并粘贴下面的代码,以检查是否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; 
    } 

编码愉快!让我知道,如果有什么不工作,我可以修复它!

+0

感谢Josh Sanders和YankeeWhiskey。我使用opencv,编译它没有TBB,openni – 2013-08-05 22:39:31

+0

没问题!你能否选择其中之一作为接受的答案? – 2014-07-10 15:22:43

0

我又安装了OpenCV的主,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错误,Visual Studio告诉我这个错误,这通常是内存分配极限错误,我做了和你说的@dilgenter一样的东西,现在它运行良好,但是只有2.4.5和python_d。 lib错误可能会发生,这在调试模式下不成问题我已经从很多论坛网站上了解到这一点。我会试着找出为什么2.4.7的imread返回null Mat元素。但现在我太忙了,这是