|
|
EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
本帖最后由 thinkfunny 于 2021-4-14 09:03 编辑
# V- E) q" J, Z$ g7 e" u0 ]" g) _5 U2 w+ F
- 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 cvShowImage, file /home/chengchenglu/work/Opencv/opencv-3.4.0/modules/highgui/src/window.cpp, line 611
- terminate called after throwing an instance of 'cv::Exception'
- what(): /home/chengchenglu/work/Opencv/opencv-3.4.0/modules/highgui/src/window.cpp:611: error: (-2) 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 function cvShowImage
- Aborted (core dumped)+ l b* C4 h" D$ t
& O8 |0 @6 O7 c$ A
* b* o) {) ~, ]5 N; X' t5 P
Cmake的安装
4 c$ s* \6 l, ]1 L# `8 o8 Z' U) H' v+ wOpenCV 2.2以后版本需要使用Cmake生成makefile文件,因此需要先安装cmake。
y$ u1 a" |8 h8 t: X- l7 I" [3 D7 C( s
ubuntu下安装cmake比较简单,, x) y- G# Q! ]1 q% M4 s2 k
0 q x$ u/ F+ v [; X+ o& T
apt-get install cmake
; n4 c( w! X' Q. R( B( s- n# y! t# y, i$ A, ~6 u7 P) i
如果觉得自带的版本不符合要求,可以下载安装包。
7 {; v/ J- c) \2 G G. k% K8 K! m
下载最新版的安装包:* ]5 m+ i4 [0 L9 w5 k2 D. k1 S
1 v9 d: @+ v' m. A: ?+ c6 lhttp:/ /www.cmake.org/cmake/resources/software.html
" f4 C9 }! q W' O
]% X, f" O) A9 M" c0 ~1 f这里下载已经编译好的,这样只需要解压至需要的目录下即可使用:
- J5 c3 ]* A2 D% N& Z0 s: h8 ]3 `* d9 Q9 Q6 e0 H0 ~
tar zxvf cmake-2.8.10.2-Linux-i386.tar.gz –C /usr/local/
* m+ u+ l# R8 `. e; N! N+ L% M. M' `7 D" b, q5 X
设置环境变量: ^$ t0 S% m! L$ U0 t }
/ p9 X$ O2 u+ ]# s6 a9 C7 p7 f
sudo gedit /home/emouse/.bashrc
. V8 i& P1 {) @2 i H+ n. J7 A9 F/ R/ F+ n$ L( L9 n) l+ H9 Y; J
在打开的文件后添加:
4 |& G1 b8 Q, S9 U' \ @: v' j' W3 U0 ^- U! |8 o8 k: }& ^: w' q
export PATH=$PATH:/usr/local/cmake-2.8.10.2-Linux-i386/bin
) M. Q* {. @. Z. z/ F' a7 t6 E5 Q7 j C, d
查看版本,测试是否安装成功:
% o* |8 k3 n, f% i4 X" m. W5 t E, N x$ i# s
root@emouse:/home# cmake --version 5 U$ _; B; m% K
cmake version 2.8.10.2
: `2 z0 q% V" x; I2 F, I& G9 ~9 i* y& z' c
( l6 Q" L* u& t) {& y, A) L& e; z8 w D) f( H- F
Ubuntu 下安装 OpenCV% i, H' r" `: q. f6 j
' O' N4 m3 D7 E- K
软件环境:
0 O; j% H9 C( ]/ p" F6 M# u
3 w4 q7 a9 b, U1 }* `. bUbuntu 12.04
% ~0 H/ a7 D7 W# s( W
# `8 w9 `; y. qOpenCV 2.4.3
# d/ f- ?! M9 k) ?3 a8 @/ r' E) [5 {7 Q* ]5 k- K
Cmake 2.8.10.18 E. z/ r" ?+ [1 r
6 c( h! O( {- V: A8 H0 V1 N+ _: B- t8 Hgcc 4.6.3 (系统默认)6 @1 m- x) H- \0 O# T- w
& [0 O6 p+ z$ j% H2 p 4 V1 O" f' T) O" y8 c
. ]) o! x1 a4 c0 A+ m4 m4 U' p1、先安装 libgtk2.0-dev 和 pkg-config,,否则后期编译运行程序会出现类似如下的问题:
% C y( v3 S& C' I
$ i0 V1 R# C: O" z6 X/ \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 /usr/local/opencv/OpenCV-2.0.0/src/highgui/window.cpp, line 100
! u5 C% | i! l2 X. b b* yterminate called after throwing an instance of 'cv::Exception'
: v8 @, f5 w5 N; ]* }: [! B0 k5 k8 f t K; @
通过网络获取安装:
; Y+ a" Y6 K3 Y
' @% t2 s9 e: }1 \5 D, ?! w- # apt-get install libgtk2.0-dev
- # apt-get install pkg-config
3 P: h+ p z3 `. m' ~
! y( E$ T8 E% F) I/ T7 g
" }* N- k/ M c- X# H2 {
9 w+ b$ L6 _2 D' a2、下载OpenCV ,文件名:OpenCV-2.4.3.tar.bz2,下载地址: k$ i8 v; ` H0 g+ Q
2 ~2 I7 G1 ]; k) ?http:/ /www.opencv.org.cn/index.php/Download9 M! T) d9 ]7 m0 g" z( ?7 o
- l2 ]3 R( B1 M0 a ]解压:
i4 t# ~9 g' ?9 D: `
( U2 z3 `% n3 K8 \# U#tar jxvf OpenCV-2.4.3.tar.bz2. f: D$ v# A7 E! {. }% d7 _7 P" ~- ?
" G2 E' t9 ?2 k _" S0 E
得到文件夹 OpenCV-2.4.38 N% h' u2 N# S. v( f/ y2 e
/ x- n4 |; Z) e# Z这里新建一个文件夹OpenCV-x86作为PC编译目录。, I; t- J4 @6 k- [* i# y
# m, @- ~" l7 x" g
; M: J, G8 B) G* j3 L
, J1 n7 o6 H2 |: z* o3、#cmake-gui 打开cmake的gui界面,开始进行配置。
% l# n3 A. F7 _) q, a0 g/ f! i: g- U2 w- \0 N* ]- a7 I
cmake主要用于进行一些配置设定,从而生成用于编译安装的makefile文件,通过界面进行参数的配置和设定,非常直观、方便。在配置中指定源码和编译目录以及生成方式。
! u" ?: Y) j* g0 u
! g5 n+ `3 e# ]2 d8 ^按照下图的步骤进行配置:; U7 x: C* ~5 i9 B" h' G. \
' @; Y! O0 W6 U( z
! t' O, H5 L% |* {$ H4 v+ Z3 ?
7 x' M# u0 Q/ v8 M- t& C
) }! D) X E [
点击Finish后cmake即载入默认配置,如下图所示:* s5 w1 g0 U" q; I
9 `" H1 }, }& |' \! O# Q% G! @
+ L1 e# Q9 S% b& \1 c6 _- h
: t9 k. u( S- q' }
$ l6 V7 c4 n9 i1 M# k如图所示,窗口的中间部分即配置列表,这里和使用cmake命令直接生成makefile文件一致的,如% b0 z/ s- d$ P% L6 j( K+ F
1 A: R# s5 `; s9 |5 c$ cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/home/OpenCV3 p9 N. X, e/ s! o2 ]
7 w$ K) v: H0 {9 {
只是这里通过图形界面的方式来进行配置,更加直观方便。
( |1 l: A" B- B
1 O0 A3 T9 H' j/ i7 h, M这里指对一个地方进行修改,CMAKE_BUILD_TYPE 值输入RELEASE,其他保持不变,图中蓝色虚线部分显示了默认的安装目录,生成makefile文件最后执行 make install时就会安装到这个目录,这里可以根据个人需求更改。在这里的配置中我勾选了WITH_QT 去掉了WITH_TIFF,其他更多的配置也不清楚,OpenCV中文网站也没找到系统的说明,这里暂时不深究,点击Generate生成配置文件。2 ~) x3 x; N, Q6 b5 a
$ d, U' Z6 | `7 ~& e+ g
进入OpenCV-x86目录可以查看Makefile文件,可以留意文件的生成时间是否和刚才的生成时间一致。) y; t# L U$ z5 q4 L
, h8 A4 [8 a+ C+ ?' Y: A% J5 R4、接下来在OpenCV-x86 分别执行make和make install即可完成编译安装。
( T: o/ h( J, K2 l: V& t- ^/ ^- z8 C8 n& }% U4 u
5、安装完成后需要对系统相关环境变量进行配置:5 s! b0 d9 s- L* p- I% i: M+ v; S
- ~0 f4 d8 p ^1 d# w" V! e! T9 Q
- sudo gedit /etc/ld.so.conf.d/opencv.conf
* V: g1 K3 e6 b
4 n) [: y; P6 l6 E1 _3 B1 O/ Y2 q9 V3 Q5 t/ z
将以下内容添加到最后:
! O8 v1 z; d4 w4 K6 {6 L5 ^6 {7 P3 |7 W" I. {% L/ e+ J
/usr/local/lib, F1 Z7 Z% S' [ D$ K1 {. ?
' a& M# Q+ p* o$ ~1 d
接下来配置库:
& S; i d8 x& r- s( M( `/ y( J# v/ _8 Z ]
- sudo ldconfig
: y" u2 v8 L5 s7 [: k, H
- [, {2 f: S8 S7 Y$ Q2 o8 s1 {1 W' i, r5 G: Z8 @
更改环境变量:
" T* k1 L/ s9 M Z& a2 {7 R8 X$ A9 G
- sudo gedit /etc/bash.bashrc
0 G/ J& O# Z& Z: s* k3 S# f 9 B4 D S) W" _8 a5 ^+ V% D
5 l& z9 e" T( p( S! P. f在文件后添加:; \ c8 O4 @; j. |4 ~) l
6 m& |! b5 J, g$ ?; ^+ l0 C- PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
- export PKG_CONFIG_PATH3 B- C" J2 E: R% ?$ |; J
) C$ t" G( Z% L4 [$ c2 U/ N+ }
' |6 ~/ C! ^0 @1 c/ |: ?# M保存退出,在运行下面的例程之前,需要重新开启终端来使配置生效。
( @5 R) R% u7 J. v k9 I1 q! H# o- m. z, E( ^$ J6 W1 r
' x" o* t s; D$ P7 [' k: ^1 F. e
例程测试# h& k; i1 P! O0 q! r% H# C6 _" {
1 P+ P5 U9 E5 ~7 c2 ]
拷贝步骤2中解压的的/OpenCV-2.4.3/samples/c 将c文件夹拷贝出来,下面运行一下这里面的一个例程,初步体验下OpenCV。拷贝完成后进入这个文件夹:
" E9 ~; R( y X3 j4 S Z2 H9 ]1 C1 O0 k+ [
chmod +x build_all.sh
0 z8 c# X: u) g# V" W
4 N8 |. p/ R* R+ X9 V./build_all.sh
, [% H% k. }9 N# m, ~2 M
! u+ E o2 D S Y8 T( m这样就对例程目录下的源文件进行了编译,这里运行一个人脸检测的程序,下面摘录自本文参考资料3。: J# ~, G5 v$ ~7 B
; e" ] ^$ n* G- u* d: u
Some of the training data for object detection is stored in /usr/local/share/opencv/haarcascades. You need to tell OpenCV which training data to use. I will use one of the frontal face detectors available. Let’s find a face:& R) }( j" B# n9 E
1 ]1 r! f1 o+ X% H4 h终端中运行:- g; o& m2 W4 F7 S
1 e! L- x& N5 v) a! o
- ./facedetect --cascade="/usr/local/share/OpenCV/haarcascades/haarcascade_frontalface_alt.xml" --scale=1.5 lena.jpg0 y6 j4 V1 t+ O9 o1 k
7 E2 K* K5 h; \* i
, r8 _ Z6 C2 [# A o得到的结果如下图:9 y# l- N% y) D7 n
8 H3 T0 M/ k. W; F& a
: O8 Q0 |+ m% S* k: E1 a
- F9 n& {; }: J+ U6 F. Q
+ G# Z3 t( ^1 _; a; P3 N) w' g) u0 t1 M9 S- i
到这里基本的就写完了,OpenCV我之前也没有任何基础,这里只是把平台配置起来跑通,后续的工作还有很多,欢迎各位参考。
- M- u; _' U. D+ b |
|