设为首页 收藏本站
查看: 832|回复: 0

[经验分享] (原+转)ubuntu16中安装opencv2.4.11(2.4.13)

[复制链接]

尚未签到

发表于 2017-6-7 11:42:47 | 显示全部楼层 |阅读模式
  转载请注明出处:
  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更新结束
====================================================
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 != 2 )//判断参数是否是两个
    {
printf( " No image data \n " );
return -1;
}
char* imageName = argv[1];
Mat image = imread( imageName, 1 );//读入图片;
if(  !image.data)//判断是否有数据
    {
printf( " No image data \n " );
return -1;
}
namedWindow( imageName, CV_WINDOW_AUTOSIZE );
imshow( imageName, image );//显示图片

waitKey(0);
return 0;
}
  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 11.jpg
显示图像,说明安装成功
ps
1. 之前未使用步骤1,结果编译没错,运行后,提示



OpenCV Error: Unspecified error (The function is not implemented. Rebuild the library with Windows, GTK+ 2.x or Carbon support. If you are on Ubuntu or Debian, install libgtk2.0-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 483 terminate called after throwing an instance of 'cv::Exception'
执行步骤1并重新编译了opencv之后,运行便显示图像了(感觉不需要所有的库都装上去,但是还是都装了)。
2. 如果提示没有安装cmake的话,安装一下cmake
3. 第6步中,/usr/local ..这样用就行了。开始一直以为这个是自己设置的目录,结果怎么编译都提示没有文件夹(对linux真心不熟)。。。
4. 如果使用NetBeans IDE的话,
不执行步骤1编译没错,运行时会有如下错误:
DSC0000.png
编译完之后,需要设置连接器中的库:
库目录如下:
DSC0001.png

添加opencv的库:
本来左侧是没有那一串的,点击“添加PkgConfig库”
DSC0002.png
出现如下界面,点击“opencv”
DSC0003.png
最终库里面如下(下图中应该还有库目录的设置,首先截的是这个图,所以没有):
DSC0004.png
编译后可成功运行。
并未像参考网址中那样,设置libiary等,但是可能那样以后会方便吧。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-384772-1-1.html 上篇帖子: linux系统中rsync+inotify实现服务器之间文件实时同步 下篇帖子: 终于落脚了!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表