(原+转)ubuntu16中安装opencv2.4.11(2.4.13)
转载请注明出处:
http://www.cnblogs.com/darkknightzh/p/5638117.html
参考网址:
http://www.cnblogs.com/jeakon/archive/2013/05/08/3066469.html
http://my.oschina.net/u/1757926/blog/293976
1 预先安装一些软件:
sudo apt-get install build-essential cmake libgtk2.0-dev pkg-config python-dev python-numpy libavcodec-dev libavformat-dev libswscale-dev
2 去管网下载opencv压缩包
3 解压压缩包到某文件夹(用windows习惯了,直接右键提取到此处。。。)
4 command中cd到该解压缩的文件夹中,然后创建build文件夹 mkdir build
5 进入build目录 cd build
6 编译opencv源码
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local ..
====================================================
161107更新:
1). 更新了cuda8.0之后,opencv重新安装时,提示:
Unsupported gpu architecture 'compute_11'
http://stackoverflow.com/questions/28010399/build-opencv-with-cuda-support指出,上面的命令换成
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D CUDA_GENERATION=Kepler ..
便可以解决该问题。
http://www.th7.cn/system/lin/201702/203301.shtml
中指出,可以设置为自动识别:
cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D CUDA_GENERATION=Auto ..
2). 上面可以过去,之后还是会有错误:
graphcuts.cpp error 'NppGraphCutState' has not been declared
按照https://kangkang113.wordpress.com/2016/09/02/deep-learning-framework-using-gtx1080ubuntu16-04/中的说明,需要修改源代码,进入graphcuts.cpp(位置opencv-2.4.11/modules/gpu/src/graphcuts.cpp),然把45行改成
#if !defined (HAVE_CUDA) || defined (CUDA_DISABLER) || (CUDART_VERSION>=8000)
之后便可以编译成功。
3). 编译中会有很多warning,如:
/home/opencv-2.4.11/modules/core/include/opencv2/core/cuda_devptrs.hpp:147:17: warning: ‘template<class T> struct cv::gpu::DevMem2D_’ is deprecated [-Wdeprecated-declarations]
typedef DevMem2D_<unsigned char> DevMem2Db;
^
/home/opencv-2.4.11/modules/core/include/opencv2/core/cuda_devptrs.hpp:138:61: note: declared here
template <typename T> struct __CV_GPU_DEPR_BEFORE__ DevMem2D_ : public
暂时没管这些wanring。
161107更新结束
170121更新:
今天装了opencv2.4.13,上面2).中的地方已经修改了,因而不需要再修改了。
170121更新结束
====================================================
170620更新:
在安装了anaconda,而且默认g++变成了anaconda中的g++之后,会提示:
/usr/bin/ld: /home/XXX/anaconda2/bin/../lib/gcc/x86_64-unknown-linux-gnu/5.4.0/crtbeginS.o:unrecognized relocation(0x2a) in section `.text'
/usr/bin/ld: final link failed: Bad value
collect2: error: ld returned 1 exit status
上面的错误见:http://www.cnblogs.com/darkknightzh/p/6950263.html
主要是anaconda的问题吧。。。此处使用cmake,因而需要将c++编译器改成系统自带的,使用CMAKE_C_COMPILER及CMAKE_CXX_COMPILER这两个来设定cmake使用的c及c++编译器(http://blog.csdn.net/10km/article/details/50444715),具体代码如下(结合了161107中的更新):
cmake -D CMAKE_CXX_COMPILER:FILEPATH=/usr/bin/g++-4.9 -D CMAKE_C_COMPILER:FILEPATH=/usr/bin/gcc-4.9 -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D CUDA_GENERATION=Auto ..
使用上述命令后,编译opencv成功了。折腾人啊。。。
170620更新结束
====================================================
7 安装
sudo make install
测试:
1. 写helloworld.cpp
#include <opencv2/opencv.hpp>
using namespace cv; #include <stdio.h> int main( int argc, char** argv )
{
if( argc != )//判断参数是否是两个
{
printf( " No image data \n " );
return -;
} char* imageName = argv[];
Mat image = imread( imageName, );//读入图片;
if( !image.data)//判断是否有数据
{
printf( " No image data \n " );
return -;
} namedWindow( imageName, CV_WINDOW_AUTOSIZE );
imshow( imageName, image );//显示图片 waitKey();
return ;
}
2. 写cmake的makefile,即CMakeLists.txt
cmake_minimum_required(VERSION 2.8)
project(helloworld)
add_executable(helloworld helloworld.cpp)
find_package(OpenCV REQUIRED)
target_link_libraries(helloworld ${OpenCV_LIBS})
=======================================================================================
170121更新:
刚才编译opencv2.4.13,之后编译该程序时,提示:
cannot find -lopencv_dep_cudart
https://github.com/opencv/opencv/issues/6542中指出,在cmake时,加上-D CUDA_USE_STATIC_CUDA_RUNTIME=OFF(开始我以为是编译opencv时候加上这句,结果编译这个测试程序还是有问题。后来才意识到,是编译这个测试程序时加上这句才对。)
另一种解决方法就是,如http://stackoverflow.com/questions/41608111/cannot-find-lib-libopencv-dep-cudart中指出的,在上面的CMakeLists.txt中find_package(OpenCV REQUIRED)之前加上:
set(CUDA_USE_STATIC_CUDA_RUNTIME OFF)
之后按照后续的继续编译,也可以成功。
http://code.opencv.org/issues/2166中指出,由于gpumat (.hpp, .cpp)在revision #6957已经被移到opencv_core中,因而编译OpenCV with CUDA enabled时,即便工程不使用cuda,每个工程仍旧需要npp (npp32_42_9.dll, 50MB) 和 cudart (cudart32_42_9.dll) dll(这个应该是windows上面的,linux应该就是so了),
170121更新结束
=======================================================================================
3. 进入该文件夹,创建build,mkdir build
4. 之后:
cmake ..
make
得到可执行文件 helloworld
5. 拷贝一张图像到该可执行文件文件夹中,输入
./helloworld .jpg
显示图像,说明安装成功
ps:
1. 之前未使用步骤1,结果编译没错,运行后,提示
OpenCV Error: Unspecified error (The function is not implemented. Rebuild the library with Windows, GTK+ .x or Carbon support. If you are on Ubuntu or Debian, install libgtk2.-dev and pkg-config, then re-run cmake or configure script) in cvNamedWindow, file /home/XXX/file/program/opencv2411/modules/highgui/src/window.cpp, line terminate called after throwing an instance of 'cv::Exception'
执行步骤1并重新编译了opencv之后,运行便显示图像了(感觉不需要所有的库都装上去,但是还是都装了)。
2. 如果提示没有安装cmake的话,安装一下cmake
3. 第6步中,/usr/local ..这样用就行了。开始一直以为这个是自己设置的目录,结果怎么编译都提示没有文件夹(对linux真心不熟)。。。
4. 如果使用NetBeans IDE的话,
不执行步骤1编译没错,运行时会有如下错误:

编译完之后,需要设置连接器中的库:
库目录如下:

添加opencv的库:
本来左侧是没有那一串的,点击“添加PkgConfig库”

出现如下界面,点击“opencv”

最终库里面如下(下图中应该还有库目录的设置,首先截的是这个图,所以没有):

编译后可成功运行。
并未像参考网址中那样,设置libiary等,但是可能那样以后会方便吧。
(原+转)ubuntu16中安装opencv2.4.11(2.4.13)的更多相关文章
- (原+转)ubuntu16中安装opencv2.4.11
转载请注明出处: http://www.cnblogs.com/darkknightzh/p/5638117.html 参考网址: http://www.cnblogs.com/jeakon/arch ...
- (原)ubuntu16中安装moses
转载请注明出处: http://www.cnblogs.com/darkknightzh/p/5653186.html 在ubuntu14中,可以使用下面的语句安装moses: luarocks in ...
- (原)Ubuntu16中安装nvidia的显卡驱动
转载请注明出处: http://www.cnblogs.com/darkknightzh/p/5638185.html part1 直接在“软件和更新-附加驱动”里面设置 安装完ubuntu16后,显 ...
- (原)Ubuntu16中安装cuda toolkit
转载请注明出处: http://www.cnblogs.com/darkknightzh/p/5655957.html 参考网址: https://devtalk.nvidia.com/default ...
- (原)Ubuntu16 中安装torch版的cudnn
转载请注明出处: http://www.cnblogs.com/darkknightzh/p/5668471.html 参考网址: https://devtalk.nvidia.com/default ...
- ubuntu16.04安装opencv2.4.13
1.更新 sudo apt-get update sudo apt-get upgrade 2.安装关联库 2.1 搭建C/C++编译环境 sudo apt-get install build-ess ...
- (原)ubuntu中安装tensorflow
转载请注明出处: http://www.cnblogs.com/darkknightzh/p/6592052.html 参考网址: https://www.tensorflow.org/install ...
- (原)Ubuntu14中安装GraphicsMagick
转载请注明出处: http://www.cnblogs.com/darkknightzh/p/5661439.html 参考网址: http://comments.gmane.org/gmane.co ...
- (原)ubuntu14及ubuntu16中安装docker
转载请注明出处: http://www.cnblogs.com/darkknightzh/p/5653739.html 参考网址: http://blog.csdn.net/yangzhenping/ ...
随机推荐
- 纯html上下翻滚效果公告板
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- html5-语义化标签(一)
1.什么是语义化标签? 根据内容的结构化(内容化),选择合适标签 2.为什么要语义化 为了在没有css样式的情况下,页面也能很好的呈现出很好的内容结构.代码结构 方便其他设备的解析(屏幕阅读器.盲人阅 ...
- 卷积神经网络用于视觉识别Convolutional Neural Networks for Visual Recognition
Table of Contents: Architecture Overview ConvNet Layers Convolutional Layer Pooling Layer Normalizat ...
- Go 语言简介(上)— 语法
周末天气不好,只能宅在家里,于是就顺便看了一下Go语言,觉得比较有意思,所以写篇文章介绍一下.我想写一篇你可以在乘坐地铁或公交车上下班时就可以初步了解一门语言的文章.所以,下面的文章主要是以代码和注释 ...
- Cesium随笔(4)去掉cesium和bing地图的logo 【转】
在开发过程中timeline上面的logo是不是有些碍眼嘞,下面写一下去掉的方法: 在style标签中添加 css: .cesium-widget-credits{ display:none!im ...
- C#中的集合(HashTable与Array类)
一.Array类 1.Array类的属性 序号 属性 & 描述 1 IsFixedSize 获取一个值,该值指示数组是否带有固定大小. 2 IsReadOnly 获取一个值,该值指示数组是否只 ...
- Substring with Concatenation of All Words leetcode java
题目: You are given a string, S, and a list of words, L, that are all of the same length. Find all sta ...
- C#汉字转拼音,可识别多音字,带声调,提供正向、逆向、双向分词算法的小程序
用C#写了个汉字转拼音的小工具,和网上大部分工具不同,这个通过分词算法,解决了多音字的问题,并且提供声调,可开可关. 如题,用"银行 行不行 行家说了算"举例,如果转拼音却不能识别 ...
- 日程管理app
背景: 普通的笔记本显然具有保存占用较大空间的弊端.而笔记类app又借助于虚拟按键输入,便利度稍逊.假设使用电脑,又产生了较大空间的弊端. 手段: 成熟的书写识别技术 方法: 一.专有的划分有制定格子 ...
- Back Track 5 之 Web踩点 && 网络漏洞
Web踩点 CMS程序版本探测 Blindelephant 针对WORDPRESS程序的踩点工具,通过比较插件等一系列的指纹,判断版本. 格式: Python Blindelephant.py [参数 ...