linux下的opencv
以下说明在Linux下Python和OpenCV结合安装的过程,Python要使用OpenCV模块,则必须导入OpenCV提供的包,所以要提供Python支持,首先在安装OpenCV前安装必要的组件,一般列表如下:
1、gcc g++一般系统自带
2、cmake 编译OpenCV时使用,需要手动安装
3、pkg-config命令,一般系统自带,如果缺少,使用 yum -y install pkg-config 安装
4、Python 2.x,系统自带
5、NumPy 一个用于大型矩阵处理的库,这个必须!如果不安装则后面OpenCV安装后也编译不出来Python的模块,其他库可以后来安装
最后一步是安装OpenCV
在保证前4项没问题的情况下,开始安装NumPy模块,官网下载地址为:http://www.scipy.org/scipylib/download.html
进入SourceForge下载,地址为:https://sourceforge.net/projects/numpy/
直接点击Download即可下载,下载成功之后上传到Linux服务器,安装过程很简单,解压后直接安装即可(之前要确保python-devel已经安装)
unzip numpy-1.11.1.zip
cd numpy-1.11.1/
python setup.py install
另外numpy还可以去python官网下载:https://pypi.python.org/pypi/numpy
安装成功之后接下来进一步安装OpenCV,官方网站为:http://opencv.org/进入后点击DOWNLOADS来到下载界面:http://opencv.org/downloads.html,这里下载2.4.13的版本
下载完之后上传到Linux,执行接下来的安装:
unzip opencv-2.4.13.zip
cd opencv-2.4.13/
cmake -D WITH_GTK_2_X=ON -D CMAKE_INSTALL_PREFIX=/usr/local .
make # make -j4表示开4个线程来进行编译
make install
安装过程时间可能会有点长10~30分钟左右,编译完成之后OpenCV就安装到了指定的/usr/local下面的一些目录中,库文件就安装到了/usr/local/lib下,Python的模块安装位置是:/usr/local/lib/python2.7/site-packages,执行 ls /usr/local/lib/python2.7/site-packages/ 可以看到两个文件,一个是cv2.so一个是cv.py
这两个文件在刚才opencv-2.4.13编译的目录下面lib/下也存在着两个python模块文件,但是不幸的是现在并不能直接使用,原因是我们操作系统python依赖包的位置是/usr/lib/python2.7下,所以刚才如果编译到/usr下是直接可以用的,不过这个也不重要,只要我们将这两个文件复制到正确的目录下,那么就能正常使用OpenCV的功能了,执行: cp /usr/local/lib/python2.7/site-packages/cv* /usr/lib/python2.7/site-packages/ 复制过去之后进入python交互式界面执行 import cv2 没有报错则安装成功
可以写一个测试的小案例,在服务器上有一张图片是test.jpg现在简单的使用cv2模块解析成图像矩阵,然后再写入磁盘文件中,代码如下:
#!/usr/bin/python
# -*- coding:utf-8 -*-
import cv2
image = cv2.imread("test.jpg")
print image
cv2.imwrite("test1.jpg",image)
这里将原有的test.jpg生成test1.jpg,
执行 python cvtest.py 执行完后会发现输出好多矩阵变量,并且生成了test1.jpg文件
生成的文件有可能比原文件大也有可能小,具体根据图像来决定,现在查看一下图片内容,和之前是一样的
Ⅱ 怎么安装opencv linux
OpenCV是一个基于开源发行的跨平台计算机视觉库,它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。在linux上安装opencv的方法如下:
工具:
Windows7、VMware Workstation 12 Pro、ubuntu-15.10、opencv-3.0.0.zip
步骤:
一、安装关联库
1、安装编译工具:sudo apt-get install build-essential
编译程序有了这个软件,它才知道头文件和库函数在哪,最后才形成一个开发环境。
Ⅲ 如何在Linux下编译安装OpenCV
下载opencv的linux安装版,使用cmake工具编译安装,按照opencv的安装文档,一般是先执行cmake config,然后执行cmake install。
Ⅳ linux怎么配置opencv
[cpp]view plain
sudoapt-getinstallbuild-essential
sudoapt-getinstallcmake
sudoapt-getinstalllibgtk2.0-dev
sudoapt-getinstallpkg-config
sudoapt-getinstallpython-devpython-numpy
sudoapt-getinstalllibavcodec-devlibavformat-devlibswscale-devlibjpeg-devlibpng-devlibtiff-devlibjasper-dev
make&&makeinstall
sudovim/etc/ld.so.conf.d/opencv.conf
- 最后一行添加
/usr/local/lib
sudoldconfig
- 现在打开另一个文件,添加环境变量:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
exportPKG_CONFIG_PATH
cd~
vimhello.cpp
#include<stdio.h>
#include<opencv2/opencv.hpp>
usingnamespacecv;
intmain(intargc,char**argv)
{
if(argc!=2)
{
printf("usage:DisplayImage.out<Image_Path> ");
return-1;
}
Matimage;
image=imread(argv[1],1);
if(!image.data)
{
printf("Noimagedata ");
return-1;
}
namedWindow("DisplayImage",WINDOW_AUTOSIZE);
imshow("DisplayImage",image);
waitKey(0);
return0;
}
g++`pkg-config--cflagsopencv`-ohellohello.cpp`pkg-config--libsopencv`
./hellopsb1.jpg
root@iZ28gdz88j1Z:~#./hellopsb1.jpg
(DisplayImage:25620):Gtk-WARNING**:cannotopendisplay:
希望能够帮助到你
进入目录opencv-3.1.0,然后cmake生成makefile:
先把我的安装历史纪录给大家看下吧,大家也好心里有数
然后
[html]view plain
这下子代码插入了。
现在我们做的就是该怎么找到opencv库了:
首先打开这个文件,在最后一行添加一句话,当然它也可能是空的,没影响。
[html]view plain
[html]view plain
运行以下代码配置库:
[html]view plain
sudo gedit /etc/bash.bashrc
在这个文件的末尾添加下面两行:
[html]view plain
然后测试:
[html]view plain
[cpp]view plain
然后编译:
[html]view plain
然后运行:
[html]view plain
后面的psd是图片路径,由于我是在服务器上运行的,所以没办法显示出来,服务器默认是没有装Xwindow的,我装了,但是报了一堆错,就放弃了
[html]view plain
Ⅳ linux怎么切换opencv版本
1.注意事项:安装目录!
cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local/opencv3.1.0 ..1
CMAKE_INSTALL_PREFIX之后的路径就是opencv的安装目录了。之前的opencv2.4.13安装到了根目录,即/usr/local/里,所以之后的opencv3.1.0安装到了/usr/local/opencv3.1.0/中这里,两个版本opencv目录一定要分开,不能安装到同一个路径下,否则会出现问题!
2.切换方式
切换方式其实比较简单,把环境变量的路径改一下就可以了。
a)
sudo gedit /etc/ld.so.conf.d/opencv.conf1
把opencv的lib路径添加进去:
opencv3.1.0:
/usr/local/opencv-3.1.0/lib1
opencv2.4.13:
/usr/local/lib1
b)
sudo ldconfig1
c)
sudo gedit /etc/profile1
在最后加入PATH路径:
opencv3.1.0:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/opencv-3.1.0/lib/pkgconfig
export PKG_CONFIG_PATH12
opencv2.4.13:
PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH12
d)
sudo gedit /etc/bash.bashrc 1
在最后添加PATH路径:
opencv3.1.0:
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/opencv-3.1.0/lib/pkgconfig1
opencv2.4.13:
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig1
3.查看opencv版本:
pkg-config --modversion opencv
pkg-config --cflags opencv
pkg-config --libs opencv123
实际使用中发现还是在寻找opencv2.4.13.
如果编译使用的是cmake,打开CMakeLists.txt,添加:
set(OPENCV_DIR “/home/ubuntu/opencv-3.1.0/build”)
如果上述方法还没有作用,那么就只好卸载不需要的opencv版本了:
cd opencv-2.4.13/release
sudo make uninstall
cd ..
sudo rm -r release
sudo rm -r /usr/local/include/opencv2 /usr/local/include/opencv /usr/include/opencv /usr/include/opencv2 /usr/local/share/opencv /usr/local/sh
关于更多Linux的学习,请查阅书籍《linux就该这么学》。
Ⅵ opencv2.1.0在linux下怎么安装
pkg-config 是一个库文件安装信息管理工具,它可以返回已安装的库文件及其相关头文件的位置信息。安装这个极容易,自己下载安装把。
pkg-config 通过各个库文件的.pc 文件识别已安装的库文件的信息,这些.pc文件是由各库的安装程序自己生成的,例如ffmpeg 安装程序会在/usr/local/lib/pkgconfig目录下提供libavcodec.pc libswscale.pc 等5个.pc文件,分别对应安装的五个库文件。
但pkg-confg默认只搜索/usr/lib/pkgconfig目录,去寻找.pc文件,这里需要添加一个环境变量 PKG_CONFIG_PATH=/usr/local/lib/pkgconfig,使得pkg-config可以找到ffmpeg的安装信息。
三 安装cmake
cmake 是一个跨平台makefile生成工具,是编译新版opencv所必须的工具。
直接下载安装cmake到一个合适的位置,并将cmake安装目录下的bin目录加入PATH环境变量,cmake的使用详见下述说明。
四 安装opencv
1、下载最新版opencv源代码 for linux.
2、在源代码目录下 mkdir release && cd release
3、cmake ../ (重点)
使用cmake 生成编译opecv的Makefile 文件, ../ 是opencv的源代码目录,里面包含了预置的cmake 配置文件CmakeLists.txt。
这里的输出,会显示默认配置下,各模块的检测情况,重点是opencv所需工具库是否被检测到,例如视频编解码库、TBB库等。
查看CmakeLists.txt文件可知,cmake使用pkg-config获取所需的库文件的信息,这就是为什么一定要安装pkg-config的原因。
如果你看到FFMPEG及其下各子项的值为1,ok,检测到了,如果为0,核对1、2两步骤,看是否成功安装了ffmpeg,以及pkg-config是否可以检测到ffmpeg:
使用 pkg-config –list-all | grep libavcodec 。
4、 cmkae-gui ../
若你想改变opencv的默认编译模式,用cmake的图形模式可以编辑一大堆的编译参数,例如是否支持IPP、TBB等等,这里比较讨厌的是,图形模式下,你看不到选择的模块是否被正确检测到,要再运行 cmake ../ 查看。
5、 make && make install 默认 opencv将被安装在 /usr/local/ 下。
6、 编辑环境变量 LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib 以使得系统可以找到opencv的动态链接库。
到这里,opencv安装完毕,并可读写几乎全部常见视频文件,你可以使用g++直接编译你的例程,如果你的pkg-config配置正确,以下指令可以运行 :
g++ -o my_example my_example.cpp `pkg-config opencv --cflags --libs`
pkg-config opencv --cflags –libs 将返回opencv的头文件和库文件的编译参数。
Ⅶ 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
Ⅷ linux 怎么用opencv
预备
GCC
CMake
OpenCV
这些都可以在CentOS 6.0的“添加/删除软件”里面找到并安装。其他Linux版本可以选择用编译后安装或者在Rpmfind寻找二进制安装版本:
http://rpmfind.net/
CentOS安装OpenCV 2.4+
下载OpenCV 2.4+压缩包解压到一个文件夹里,如:/home/me/opencv/
构建Makefile,在终端输入,进行构建:
cd /home/me/opencv/
cmake .
进行编译并安装,编译过程可能有些警告发生,请无视这些警告:
make
make check
make install
写一个OpenCV程序
新建一个简单的程序,例如:DisplayImage.cpp。
#include <stdio.h>
#include <cv.h>
#include <highgui.h>
//使用cv这个命名空间
using namespace cv;
/* 主函数
*C语言规定main函数只能有两个参数,
*习惯上将这两个参数写成argc和argv。
*第一个代表(传参个数+1),
*第二个代表传惨数据。
*一般有两种写法:
*main( int argc, char* argv[])
*main( int argc, char** argv)
*/
int main( int argc, char** argv )
{
//建立一个Mat类型的变量image
Mat image;
/* API中有:
* C++: Mat imread(const string& filename, int flags=1 )
* 意思是返回Mat类型数据,第一个参数接受一个string类型的引用,
* 第二个参数接受一个int类型的flags,一般都是1。
*/
image = imread( argv[1], 1 );
//当传的参数不是一个,或者图片没有数据则提示没有图片并退出程序
if( argc != 2 || !image.data )
{
printf( "没有该图片 \n" );
return -1;
}
//C++: void namedWindow(const string& winname, int flags=CV_WINDOW_AUTOSIZE )
namedWindow( "显示图片", CV_WINDOW_AUTOSIZE );
//C++: void imshow(const string& winname, InputArray mat)
imshow( "显示图片", image );
//C++: int waitKey(int delay=0)
waitKey(0);
return 0;
}
新的头文件写法
同样的程序,可以用新的头文件写法来写:
#include "opencv2/core/core.hpp"
#include "opencv2/highgui/highgui.hpp"
#include <stdio.h>
using namespace cv;
int main( int argc, char** argv ){
Mat image;
image = imread( argv[1]);
if( argc != 2 || !image.data ){
printf("没有图片\n");
return -1;
}
namedWindow( "显示图片", CV_WINDOW_AUTOSIZE );
imshow( "显示图片", image );
waitKey(0);
return 0;
}
创建一个对应的CMake文件
新建一个CMakeLists.txt,内容大概是这样的:
project( DisplayImage )
find_package( OpenCV REQUIRED )
add_executable( DisplayImage DisplayImage )
target_link_libraries( DisplayImage ${OpenCV_LIBS} )
生成可执行文件
cd <DisplayImage_directory>
cmake .
make
结果
生成了一个DisplayImage文件,所以运行这个文件,将文件路径传进去:
./DisplayImage lena.jpg
你就能看到图片了