我下载了opencv-2.4.5的源代码,我按照教程(在windows的opencv网站上)关于安装我自己的库的一切。好。我用cmake创建了opencv.sln文件,然后我用visual studio 2010专业人员打开它,然后点击构建解决方案,但只有9个成功。大多数200失败,大多数关于tbbd.lib的错误未找到,并且在LNK1104错误中找不到opencv_core245d.lib。我试图解决它多少天。我试图展示文件的方式......任何人都可以帮忙吗?这是关于我的论文。 (没有共同语言支持的构建)
答案 0 :(得分:7)
收起
我花了大约15个小时才完成使用OpenCV完成的作业。这些时间中有14.5小时用于正确设置。我浏览了大约7个教程视频,几个设置指南,并阅读了数百个包含我所获得的相同错误的解决方案的帖子。所以我明白,简单地安装OpenCV并不是一项简单的任务,并且有几个步骤可以做到这一点。因此,如果您想使用openCV,这里有一个简单的教程。
了解链接的工作方式非常重要。有三种类型的文件,您包含的标头,包含这些函数的.dll,以及包含如何调用.dlls中的函数的说明的库。所以在这里,我们将添加lib文件,而不是仅将.dll添加为输入链接器中的依赖项。然后,我们将创建一个System Environment变量,该变量将告诉机器在引用相应的库文件时在哪里查找.dll文件。我们将创建一个属性表,以便在创建新项目时,只需单击"添加现有属性表"即可将设置添加到项目中。而不是添加一个新的。这样,我们再也不必经历这个了。
完全遵循这些步骤并确保可视化工作室在继续之前已关闭
注意:当引号中的文字带有复制所述文字的说明时,请不要包含引号。
安装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
当窗口打开时,单击"下一步",选中"清空项目",然后单击"完成"。在没有预编译标题的情况下开始使用EMPTY PROJECT非常重要。
找到"物业经理。"默认情况下,它应该是有时很难错过的选项卡。或者,可以通过单击工具栏来访问它"查看" - > "物业经理"。
右键单击"调试|的Win32"并选择"添加新项目属性表"。将其命名为" OpenCVProps"然后点击"添加"。
右键单击新属性表并选择"属性"。
从左栏开始,转到" C / C ++" - > "通用及#34;并在右侧的列表框中,选择"其他包含目录"然后点击"编辑"。
添加以下三个目录:
" $(OPENCV_DIR)\包括"
" $(OPENCV_DIR)\包括\ OpenCV的"
" $(OPENCV_DIR)\包括\ opencv2"
从左栏开始,转到" Linker" - > "通用及#34;并在右侧的列表框中,选择"其他图书馆目录"然后点击"编辑"。
添加以下目录:
从左栏开始,转到" 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; Ctrl + F5&#34;构建,编译和运行以在窗口中观察您的图像!!
* 如果您有WEBCAM *
#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。
规格:Visual 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元素。但现在我太忙了,这是