运行了楼上给的命令之后,结果是这样的:
# 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
㈡ 怎么让opencv编译到可执行文件里,使别人电脑没有opencv也能运行exe
首先,先要再linux上安装opencv的库,在线安装的话,很容易
然后,编译的时候需要加上
`pkg-config
opencv
--libs
--cflags
opencv`
参数
㈢ 能配置opencv的编译软件有哪些
配置环境是: ubuntu12.04 + opencv2.4.0
安装OpenCV:
1. 安装必要的软件
apt-get install build-essential cmake libgtk2.0-dev pkg-config python-dev python-numpy libavcodec-dev libavformat-dev libswscale-dev
2. 从sourceforge上下载OpenCV的源码,下载地址是:
http://sourceforge.net/projects/opencvlibrary/files/opencv-unix/2.4.0/
3. 解压到任意目录
tar xvf OpenCV-2.4.3.tar.bz2
cd OpenCV-2.4.3/
4. cmake编译OpenCV源码,所有的lib文件都会被安装到/usr/local目录下
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local
5. 安装
make
sudo make install
环境变量pkg_config_path 提供编译时和运行时库的路径查询。pkg-config 是通过库提供的一个 .pc 文件获得库的各种必要信息的,包括版本信息、编译和链接需要的参数等。这些信息可以通过 pkg-config 提供的参数单独提取出来直接供编译器和 链接器使用。使用 pkg-config 的 --cflags 参数可以给出在编译时所需要的选项,而 --libs 参数可以给出 链接时的选项。
在上述opencv 的安装结束后,pkg-config 的读取目录 /usr/local/lib/pkgconfig/ 下已经有opencv.pc。
6. 更新环境变量:
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig/
编译程序:
用OpenCV读入一副图像(img.jpg),代码如下:
//main.cpp
#include <stdio.h>
#include <cvaux.h>
#include <highgui.h>
using namespace cv;
int main() {
IplImage *img = cvLoadImage("img.jpg",0);
if (NULL == img) {
printf("Load image failed.\n");
return -1;
}
printf("Hello World\n");
cvReleaseImage(&img);
return 0;
}
方法1:直接命令编译:
g++ main.cpp -o main `pkg-config --cflags --libs opencv` (注意ESC下面的`,不是单引号)
方法2:借助cmake,需要写CMakeLists.txt,示例如下:
cmake_minimum_required(VERSION 2.8)
project(Hello)
find_package(OpenCV REQUIRED)
add_executable(Hello main.cpp)
target_link_libraries(Hello ${OpenCV_LIBS})
然后:
cmake .
make
㈣ 如何编译opencv代码
..\OpenCV2.3\opencv\moles 这个目录有一些常用的库,一般算法的实现是看不到的,通常在静态库里,你可以连接他们,生成执行文件。
hpp,其实质就是将.cpp的实现代码混入.h头文件当中,定义与实现都包含在同一文件,则该类的调用者只需要include该hpp文件即可,无需再 将cpp加入到project中进行编译。而实现代码将直接编译到调用者的obj文件中,不再生成单独的虎矗港匪蕃睹歌色攻姬obj,采用hpp将大幅度减少调用 project中的cpp文件数与编译次数,也不用再发布烦人的lib与dll,因此非常适合用来编写公用的开源库。
㈤ 如何编译opencv calibration
String.prototype.sub = function (n) {
var r = /[^\x00-\xff]/g;
if (this.replace(r, "mm").length <= n) return this;
// n = n - 3;
var m = Math.floor(n / 2);
for (var i = m; i < this.length; i++) {
if (this.substr(0, i).replace(r, "mm").length >= n) {
return this.substr(0, i);
}
㈥ 如何做到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'
㈦ linux opencv 怎么重新编译单个源码
首先,先要再linux上安装opencv的库,在线安装的话,很容易 然后,编译的时候需要加上 `pkg-config opencv --libs --cflags opencv` 参数
㈧ 如何编译opencv中的install工程
第一步:由于opencv是在cmake工具下建立的工程,所以我们先要下载cmake,下载地址随便一搜都有,不多说。下载到home的主目录下,这里我们是/home/lg。看下面的命令:#cd /home/lg#tar xzvf CMake2.4.7.tar.gz .#cd CMake2.4.7#./boostrap#gmake#make install这样cmake工具安装好了,并且可以直接使用cmake命令根据cmake的编译规律,我们选择外部编译。
2
下载Opencv2.3.0到/home/lg解压后进入Opencv2.3.0的目录下(这里的opencv与以前版本1.0的不一样,没有configure文件,所以我们执行不了 ./configure命令) :#mkdir build#cd build#cmake -D CMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=/usr/local -D BUILD_PYTHON_SUPPORT=ON.. (这条命令解析可以参考cmake教程, 但是记住这里的第二个选项,我们将opencv安装在/usr/local目录下的)#make#make install到这opencv编译完成,接下去看看opencv这个工具能正常使用。
3
记住这里的做法前一种对fedora有用, 也就是说在fedora的环境下只能使用这种做法, 但是ubuntu却可以使用两种方法。 顺便说一下, 经常遇见apt-get命令,这是在ubuntu下使用获取软件包的命令, fedora使用的是yum, 记住了, 否则经常出现使用apt-get却获取不了软件包的情况。方法1:在/etc/ld.so.conf.d下新建一个文件opencv.conf,里面输入/usr/local/lib方法2:在/etc/ld.so.conf文件中加入/usr/local/lib这一行然后执行#ldconfig(root权限下)#cp /usr/local/lib/pkconfig/opencv.pc /usr/lib/pkgconfig(或者是输入这个命令 exportPKG_CONFIG_PATH=/usr/local/lib/pkgconfig:$PKG_CONFIG_PATH)( pkconfig的用法见以前的博文)至此opencv安装完成我们可以找个例子来做实验#cd /home/lg/Opencv2.3.0#cd samples/cpp#g++ `pkconfig --cflags --libs opencv` drawing.cpp -odrawing(记住前面的两个引号是通过ESC下面的那个波浪符键获得的)现在我们编译那个人脸检测程序,在Opencv2.3.0/data/目录下有检测鼻子、眼睛的XML文件,这可以通过改build目录下的c目录下的facedetect文件获得。#cd ..#cd c#g++ `pkconfig --cflags --libs opencv` facedetect.c -ofacedetect到此结束
㈨ cmake编译opencv程序的时候怎么静态编译
使用opencv需要编译源码,得到库文件。可以用cmake构建项目后编译,也可以直接用官方提供的编译好的版本。 官方提供的编译库一般只是标准版本,没有附加某些库,比如tbb等,要想让opencv使用tbb等库,就只能自己构建项目后编译。