① openCV编译时遇到问题,请前辈们帮忙指点一下
这是因为图像参数类型不同的缘故,opencv无法直接从iplimage向mat转换,需要函数进行转换。比如:
IplImage * ipl = ...;
cv::Mat m = cv::cvarrToMat(ipl);
供参考
② 如何编译 opencv动态链接库
在一个项目中需要用到OpenCV,刚开始使用了OpenCV的动态链接库,这样,在移动可执行程序时还必须将OpenCV动态支持库一起搬移,很是麻烦。所以,最终选择OpenCV静态链接库,这样程序移植运行就方便了很多。
需要编译成静态库以便于应用程序链接。
网上有的教程中写的在VC++2010下安装OpenCV2.1时用到了TBB库,而我在编译链接自己的程序后需要用到TBB.dll。本人设计的目的就是要做一个独立的界面程序,不需要携带其他第三方库。经过一段时间的努力最终找到了编译OpenCV2.1静态库的方法。
需要的工具环境及文件:
-------------------------------------------------------------------------------------------------------------
1、Windows XP
2、VC++2010(VS2010)
3、为编译OpenCV源码包(我下载的有:OpenCV2.1.0,OpenCV2.3.0及OpenCV2.4.4)
4、CMake2.8.9
说明:OpenCV各版本官方下载地址:opencv.org/
cmake-2.8.9下载地址:ishare.iask.sina.com.cn/download/explain.php?fileid=35025936
--------------------------------------------------------------------------------------------------------------
以OpenCV2.1.0编译静态库为例
CMake配置
-------------------------------------------------------------------------------------------------------------
打开CMake并设置:
Where is the rource code :OpenCV源代码所在的文件夹
Where to build the binaries:CMake配置好得到的文件放在位置(我的:E:\OpenCV2.1.0-prj)
然后点击configure,选择"Visual Studio 10"。然后确定。
等待configure完成,会出现很多红色的选项,因为主要是生成OpenCV的库,所以只需保留某些选项:
去掉BUILD_NEW_PYTHON_SUPPORT,BUILD_SHARED_LIBS, BUILD_TESTS
勾选OPENCV_BUILD_3RDPARTY_LIBS, WITH_TBB,WITH_JASPER, WITH_JPEG,
WITH_PNG, WITH_TIFF选项,
然后再点击configure,如下图:
提示TBB_INCLUDE_DIR找不到,因为我们不需要TBB库,所以忽略,再一次点击configure。
等待配置完成,最后点击generate,完成后关闭CMake。
-------------------------------------------------------------------------------------------------------------
VC++2010编译静态库
-------------------------------------------------------------------------------------------------------------
进入E:\OpenCV2.1.0-prj目录,使用VC++2010打开.sln文件,打开项目管理器
这时候会看到
解决方案中有很多小项目存在。
注:这时我们右键任意点击一个子项目(如cv),选择属性,可以在配置属性下的常规项目中看到,配置类型为
静态库(lib)。
按住ctrl键,选中除过ALL_BUILD, INSTALL, ZERO_CHECK,
uninstall四个项目的其他所有项目,在菜单中选择项目->属性,打开配置属性->c/c++->代码生成选项,在右侧窗口中的运行时库中选择多线程调试(/MTd),然后确认。
说明:这里有四个选项(/MT, /MTd, /MD,
/MDd),前两个一组,为静态链接运行时库,运行时不需要运行时库的支持,代码直接插入到程序中去;后两个一组,为动态链接运行时库,运行时需要msvcr90.dll或msvcp90.dll支持。
我们先编译Debug版的OpenCV静态库,在解决方案"opencv"(22个项目)上单击右键,选择重新生成解决方案,此时便开始编译OpenCV库了,等编译结束会提示完成16个,失败4个:
这四个项目生成的是exe程序,不需要管他们。到这步我们已经生成了Debug版本的静态库!
然后我们用相同的方式生成Release版的库,在之前的基础上只需要将选项选择多线程/MT,再进行编译。编译时警告很多,直接忽略!
注意:/MT即是Release版本,/MTD即是Debug版本。
最终我们需要的静态库就存在:E:\OpenCV2.1.0-prj/lib 和 E:\OpenCV2.1.0-prj/3rdparty/lib
两个目录,我们编译好的库就在这两个文件夹下。分别
将E:\OpenCV2.1.0-prj/3rdparty/lib中Debug
下面的所有文件Copy到E:\OpenCV2.1.0-prj/lib中的Debug 文件中。
将E:\OpenCV2.1.0-prj/3rdparty/lib中Release下面的所有文件Copy到E:\OpenCV2.1.0-prj/lib中的Release文件中。
③ OpenCV编译中出现的问题
你这里大小写的问题都有,给你个调好的程序吧
#include "stdafx.h"
#include "highgui.h"
void main()
{
IplImage* img=cvLoadImage("lena.jpg",1);
cvNamedWindow("Example1",CV_WINDOW_AUTOSIZE);
cvShowImage("Example1",img);
cvWaitKey(0);
cvReleaseImage(&img);
cvDestroyWindow("Example1");
}
④ 如何用vs2015编译opencv2
打开VS2015选择文件,然后新建项目,选择新建一个Win32控制台应用程序,并选择空项目
在源文件中添加一个名为opencvdemo的CPP文件
在该cpp文件中输入一下代码
#include <opencv2/core/core.hpp>
#include <opencv2/imgcodecs.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>
#include <string>
using namespace cv;
using namespace std;
int main() {
string imageName("C:\\Users\\lidabao\\Desktop\\Lena.bmp"); // 图片在电脑中的绝对地址
Mat image;//Mat是OpenCV最基本的数据结构,这是定义一个图像矩阵类型
image = imread(imageName.c_str(), IMREAD_COLOR);//读入图片数据
if (image.empty())//读取失败时
{
cout << "Could not open or find the image" << std::endl;
return -1;
}
namedWindow("Display window", WINDOW_AUTOSIZE); // 创建一个窗口
imshow("Display window", image); // 在窗口中显示图片
waitKey(0); // 等待一次按键,程序结束
return 0;
}`
点击视图按钮,选择解决方案资源管理器 ,在解决方案中右键单击项目名称,然后选择属性
在属性页中选择VC++目录
在包含目录中添加 D:\opencv\build\include D:\opencv\build\include\opencv D:\opencv\build\include\opencv2 这三个文件夹 在库目录中添加 D:\opencv\build\x64\vc12\lib D:\opencv\build\x64\vc12\staticlib 这两个文件夹
在属性页中选择链接器,在链接器中点击输入,在附加依赖项中添加 opencv_ts300d.lib opencv_world300d.lib 这两个东西
如果执行失败则在如图中的×86改为×64
8
程序运行结果
⑤ opencv找不到头文件cv.h
为项目的Debug配置增加依赖的库:cxcore200d.lib cv200d.lib highgui200d.lib(注意,文件名cv200d.lib 可能是cv***d.lib等形式,具体应查看D:\Program Files\OpenCV2.0\vc2008\lib )
为项目的Release配置增加依赖的库:cxcore200.lib cv200.lib highgui200.lib
配置时发现cxcore200d.lib cv200d.lib highgui200d.lib 这几个库是没有的。
通过官网的启发。于是加入一下这几个库。同理,在release中,也加入相应的库。
C:\Program Files\OpenCV2.2\lib\opencv_core220d.lib
C:\Program Files\OpenCV2.2\lib\opencv_highgui220d.lib
C:\Program Files\OpenCV2.2\lib\opencv_video220d.lib
C:\Program Files\OpenCV2.2\lib\opencv_ml220d.lib
C:\Program Files\OpenCV2.2\lib\opencv_legacy220d.lib
C:\Program Files\OpenCV2.2\lib\opencv_imgproc220d.lib
编译之后,提示 #include "highgui.h"这个找不到
接着对于给出代码的头文件进行改进。
将这个 变成:
#include "opencv2/highgui/highgui_c.h"
#include "opencv2/highgui/highgui.hpp"
⑥ cmake编译opencv程序的时候怎么静态编译
使用opencv需要编译源码,得到库文件。可以用cmake构建项目后编译,也可以直接用官方提供的编译好的版本。 官方提供的编译库一般只是标准版本,没有附加某些库,比如tbb等,要想让opencv使用tbb等库,就只能自己构建项目后编译。
⑦ 怎么使用emcv程序包中的cv源文件编译生成失败
1, PCH文件 预编译头文件(一般扩展名为.PCH),是把一个工程中较稳定的代码预先编译好放在一个文件(.PCH)里.这些预先编译好的代码可以是任何的C/C++代码--甚至可以是inline函数,只它们在整个工程中是较为稳定的,即在工程开发过程中不会经常
⑧ 什么是cv文档
cv是curriculum vitae的缩写
curriculum vitae :简历(书), 个人履历
"请上传cv文档"也就是让你上传个人履历的文档,一般是word文档
⑨ linux 下 opencv程序怎么编译
运行了楼上给的命令之后,结果是这样的:
# g++ `pkg-config opencv --libs --cflags opencv` facedect.cpp -o facedect -static
/tmp/cc8XhRf6.o: In function `find_face(_IplImage*)':
facedect.cpp:(.text+0x51): undefined reference to `cvCreateImage'
facedect.cpp:(.text+0xc0): undefined reference to `cvCreateImage'
facedect.cpp:(.text+0xdd): undefined reference to `cvCvtColor'
facedect.cpp:(.text+0xf7): undefined reference to `cvResize'
facedect.cpp:(.text+0x109): undefined reference to `cvEqualizeHist'
facedect.cpp:(.text+0x116): undefined reference to `cvClearMemStorage'
facedect.cpp:(.text+0x188): undefined reference to `cvHaarDetectObjects'
facedect.cpp:(.text+0x1c6): undefined reference to `cvReleaseImage'
facedect.cpp:(.text+0x1d1): undefined reference to `cvReleaseImage'
/tmp/cc8XhRf6.o: In function `isperson(char const*)':
facedect.cpp:(.text+0x21e): undefined reference to `cvLoad'
facedect.cpp:(.text+0x22f): undefined reference to `cvCreateMemStorage'
facedect.cpp:(.text+0x25a): undefined reference to `cvLoadImage'
facedect.cpp:(.text+0x27d): undefined reference to `cvReleaseImage'
facedect.cpp:(.text+0x289): undefined reference to `cvDestroyWindow'
collect2: ld returned 1 exit status