在Fedora22下移植opencv-2.4.10
首先到官网或其他地方获取opencv-2.4.10。在opencv-2.4.10里面已经包含了cmake了,等会直接用就可以。
在Fedora22下安装编译环境,因为这些操作我已经做完,所以下面都显示跳过。
一、安装编译环境:
[root@localhost cpp]# dnf install gcc gcc-c++ ncurses-devel cmake
Last metadata expiration check performed 2:01:52 ago on Fri Sep 18 15:19:05 2015.
软件包 gcc-5.1.1-4.fc22.x86_64 已安装,跳过
软件包 gcc-c++-5.1.1-4.fc22.x86_64 已安装,跳过
软件包 ncurses-devel-5.9-18.20150214.fc22.x86_64 已安装,跳过
软件包 cmake-3.2.2-1.fc22.x86_64 已安装,跳过
依赖关系解决。
无需任何处理。
完毕!
二、安装GTK+2.X
[root@localhost ~]# dnf install gtk+ gtk2-devel pkgconfig python-devel python-numpydoc
Last metadata expiration check performed 2:06:57 ago on Fri Sep 18 15:19:05 2015.
软件包 gtk+-1:1.2.10-80.fc22.x86_64 已安装,跳过
软件包 gtk2-devel-2.24.28-1.fc22.x86_64 已安装,跳过
软件包 pkgconfig-1:0.28-8.fc22.x86_64 已安装,跳过
软件包 python-devel-2.7.10-4.fc22.x86_64 已安装,跳过
软件包 python-numpydoc-0.5-1.fc22.noarch 已安装,跳过
依赖关系解决。
无需任何处理。
完毕!
[root@localhost ~]# dnf install libavc1394 libavc1394-devel libdc1394 libdc1394-devel jasper-devel
Last metadata expiration check performed 2:08:08 ago on Fri Sep 18 15:19:05 2015.
软件包 libavc1394-0.5.3-16.fc22.x86_64 已安装,跳过
软件包 libavc1394-devel-0.5.3-16.fc22.x86_64 已安装,跳过
软件包 libdc1394-2.2.2-3.fc22.x86_64 已安装,跳过
软件包 libdc1394-devel-2.2.2-3.fc22.x86_64 已安装,跳过
软件包 jasper-devel-1.900.1-30.fc22.x86_64 已安装,跳过
依赖关系解决。
无需任何处理。
完毕!
三、有上述两步基本的环境安装完毕,下面开始编译opencv-2.4.10
1、用 unzip 解压下载下来的压缩包;
2、进入解压后的文件卷 cd /opencv-2.4.10
3、mkdir realease
cd release
4、cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D BUILD_PYTHON_SUPPORT=ON ..
5、make
make install
四、添加相应环境变量
1、新建一个opencv.conf文件
vim /etc/ld.so.conf.d/opencv.conf
在该新文件中添加 /usr/local/lib
2、添加环境变量
vim /etc/profile
在最后添加内容:
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
vim /etc/bashrc
在最后添加内容:
export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib
到这里移植基本结束,下面我们就要验证移植是否成功。可以运行opencv下的实例程序,它的实例程序多达100个,这也是初学习opencv的好材料可以见最后附录。
进入openc下的sample的c中,可以执行它的shell程序(这个shell有执行权限问题,把它改为可执行状态即可),把该文件卷下的所有程序进行编译。也可以自己一个一个区编译。命令如下:
g++ `pkg-config --cflags opencv` -o
facerec_demo facerec_demo.cpp `pkg-config --libs opencv`(facerec_demo.cpp为cpp文件卷下的一个文件)。再执行程序,可以看到图片就说明你一直成功了。
parter 1:
No1. adaptiveskindetector.cpp
利用HSV空间的色调信息的皮肤检测,背景不能有太多与肤色相似的颜色。效果不是特别好。
No2. bagofwords_classification.cpp
好大一串……目前还看不懂。
No3. bgfg_codebook.cpp
前后背景分离。开启摄像头或读取视频。
No4. bgfg_gmg.cpp
摄像头捕捉,根据运动进行前后背景分离。
No5. bgfg_segm.cpp
高斯处理视频。跟踪运动做前背景分割。BackgroundSubtractorMOG2类。
No6. blobtrack_sample.cpp
视频跟踪。跟踪视频中的运动物体,用绿色线框出。
No7. brief_match_test.cpp
利用brief描述算子匹配二维图像特征点。line118出错.???
No8. build3dmodel.cpp
建立三维模型。根据给出的检测器对原始进行建模。
No9. calibration.cpp 3calibration.cpp
相机外定标。根据自带的函数提取角点后定标,效果很不好。
No10. calibration_artificial
根据角点自动校准摄像。初始化后寻找角点再用calibrateCamera校准,有findChessboardCorners估计效果不
怎么好。
No11. chamfer.cpp
图像匹配。把图像二值后在目标图像中寻找模板图像。主要调用chamerMatching函数。
No12. contours.c
轮廓查找与获取。cvFindContours一个函数搞定。
No13. convert_cascade.c
从文件中装载训练好的级联分类器或者从OpenCV中嵌入的分类器数据库中导入然后另存为一个文件。
No14. convexhull.cpp
凸包。产生随机点后计算凸包。
No15. cout_mat.cpp
opencv中矩阵的输出。
No16. delaunay.c delaunay2.cpp
根据随机点进行Delaunay三角测量找到边,结束时计算Voronoi图表的细胞结构。
No17. demhist.cpp
直方图均衡化来调节图像的亮度和对比度,输出黑白图像。
No18. descriptor_extractor_matcher.cpp
7-8个参数。SIFT匹配。
No19. detector_descriptor_evaluation.cpp
计算检测算子。各种Dataset。
No20. detector_descriptor_matcher_evaluation.cpp
计算检测算子匹配。也是各种Dataset。
No21. dft.cpp
对图像进行离散Fourier变换。数学变换。
No22. distrans.cpp
距离变换。计算输入图像所有非零元素和其最近的零元素的距离。
No23. drawing.cpp
简单的画点、线、文字等。不解释。
No24. edge.cpp
边缘检测。通过滑动条调节阈值,利用Canny检测图像边缘后显示,很简单的一个代码。
No25. em.cpp
em聚类。
No26. fabmap_sample
fab-mat匹配。从训练数据中建立Chow-Liu树。
No27. facedetect.cpp smiledetect.cpp
人脸检测。根据已训练好的分类器对人脸图像进行检测,用不同颜色的圆形框或矩形框标记出检测出的五官。
No28. facerec_demo.cpp
人脸识别。
No29. fback.cpp fback_c.c
计算视频的光流。默认打开摄像头,有些卡,速度慢。
No30. filestorage.cpp
Mat矩阵存储,读写xml/yml文件。
No31. find_obj.cpp
有关Surf算法的示例。利用匹配在目标图像中寻找样本图像中的物体。
No32. find_obj_calonder.cpp
通过训练分类树检测目标物体。需要训练图像。
No33. find_obj_ferns.cpp
同样是目标检测。基于随机蕨丛的快速识别关键点。
No34. fitellipse.cpp
椭圆拟合,查找图像轮廓图形。findContours很有用。总体效果不理想。
No35. freak_demo.cpp
利用特征点进行图像匹配。特征点描述包括A.Alahi, R. Ortiz, and P. Vandergheynst. FREAK: Fast
Retina Keypoint.
No36. gencolors.cpp
输入颜色数量,产生着色条带状图像。色带宽20。
No37. generic_descriptor_match.cpp
SURF图像匹配。输入参数包括两幅图像和参数数据。
No38. houghlines.cpp houghcircles.cpp
利用Hough变换提取图像中的直线或圆。效果一般。Canny很重要。
No39. image.cpp
基本的图像和视频读取,图像加噪和平滑处理。
No40. kalman.cpp
Kalman滤波,先建立运动模型和观察模型。对绕圆周运动的一维点跟踪,算法结果显示了估计点和实际点的连线。
No41. kmeans.cpp
聚类分析。在平面上产生随机点后用K-means算法作聚类迭代,由于聚类中心也是随机产生的,可知效果很不好。
No42. laplace.cpp
也是边缘检测。由滑动条调整阈值,先对图像作滤波(高斯,均值,中值),后Laplace检测边缘。参数sigma=3时效果最好。
No43. latentsvmdetect.cpp
用latentSVM检测目标。
No44. letter_recog.cpp
演示训练各种不同的分类器,使用uci的字符库数据集。
No45. logpolar_bsm.cpp
坐标的相互转化。
No46. matcher_simple.cpp
SURF图像匹配。参数少,效果和generic_descriptor_match.cpp相似。
No47. matching_to_many_images.cpp
多幅图像的匹配。强大的SURF算法。
No48. meanshift_segmentation.cpp
meanshift图像分割。三个参数spatialRad、colorRad和maxPyrLevel可调。
No49. minarea.cpp
产生随机点后计算包含所有点的面积最小的圆和矩形。纯数学问题。
No50. morphology.c morphology2.cpp
形态学基本运算,包括开/闭运算,膨胀/腐蚀运算。
No51. motempl.c
运动跟踪。
No52. mser_sample.cpp
MSER方法区域提取图像轮廓。使用颜色距离阈值的基于MSER方法的最大稳定颜色区域检测子(Maximally
Stable Colour Regions,MSCR)。
No53. mushroom.cpp
演示建立决策分类树训练使用mushroom数据
No54. one_way_sample.cpp
基于主成分分析的特征点匹配问题。运行时间好长……
No55. opencv_version.cpp
显示opencv版本。简单的几行代码。
No56. OpenEXRimages_HighDynamicRange_Retina_toneMapping.cpp
OpenEXRimages_HighDynamicRange_Retina_toneMapping_video.cpp
不清楚。
No57. openni_capture.cpp
开放式的自然交互视频捕捉。Depthgenerator。
No58. pca.cpp
主成份分析算法。重建。
No59. peopledetect.cpp
HOG (Histogram-of-Oriented Gradients)行人或人体检测,使用的是hog特征和svm。
No60. phase_corr.cpp
基于相位的相关图像运动方位跟踪程序。
No61. points_classifier.cpp
点分类。鼠标点击给定点和类。
No62. polar_transform.c
线性坐标和极坐标相互转换。可以从摄像头捕捉图像。
No63. pyramid_segmentation.c
金字塔图像分割。
No64. retinaDemo.cpp
Retina特征点检测。
No65. rgbdodometry.cpp
视觉里程计算法。为了估计刚体变换,试图找到翘曲,即最大化之间连续两个RGBD的帧不同的图像尺度。
No66. segment_objects.cpp
视频跟踪分割运动中的物体。
No67. select3dobj.cpp
收集数据集对象和分割遮罩,显示了如何使用相机的校准模式。计算该单对应性校准图案上的平面。还显示
grabCut分割等。
No68. simpleflow_demo.cpp
一种光流算法。
No69. squares.cpp
寻找矩形。
No70. starter_imagelist.cpp
根据图像列表文件yaml读取并显示图像。
No71. starter_video.cpp
打开视频图像选择画面保存为图片。
No72. stereo_calib.cpp
摄像机立体校准。
No73. stereo_match.cpp
立体匹配。
No74. stitching.cpp stitching_detailed.cpp
图像拼接。涉及到特征点的提取、特征点匹配、图像融合等等。Stitcher类。
No75. tvl1_optical_flow.cpp
光流法视频跟踪。
No76. tree_engine.cpp
演示使用不同的决策树CvDTree dtree;决策树CvBoost boost;Boosted tree classifier监督学习树
CvRTrees rtrees;随机树CvERTrees ertrees;完全随机树。
No77. video_dmtx.cpp
视频截图。
No78. video_homography.cpp
使用features2d的快速角点检测。
No79. videostab.cpp
稳定视频。
No80. watershed
做分水岭图像分割。
parter 2:
No1. camshiftdemo.cpp
彩色目标跟踪。根据鼠标点击一个区域的色度光谱来跟踪视频目标。
No2. connected_components.cpp
连通区域。findContours+drawContours。
No3. contours2.cpp
先画一张线条图后检测轮廓。参数可调。
No4. ffilldemo.cpp
漫水填充。根据鼠标选取的点搜索图像中与之颜色相近的点,用不同颜色标注。
No5. grabcut.cpp
图像分割,鼠标选取矩形框,抠出前景,分离背景。效果还挺不错的。
No6. hybridtrackingsample.cpp
混合跟踪。调试时HybridTracker那出错了,不懂。
No7. imagelst_creator.cpp
把图像名称列表写成yaml或xml格式。
No8. inpaint.cpp
数字图像修复程序,基于纹理合成。先在图像上随便画,按"i"键后显示修复的图像。
No9. linemod.cpp
line196出错.???
No10. lkdemo.cpp
点跟踪。改进的Lucas-Kanade光流算法,检测视频运动目标。鼠标点击目标点,视频跟踪。
parter3:
No1. detection_based_tracker_sample.cpp
UNIX或ANDROID平台上使用的例子。基于检测的跟踪。
在Fedora22中安装OpenCV3.0.0:http://www.linuxdiyf.com/linux/12610.html
Ubuntu14.04安装OpenCV3.0:http://www.linuxdiyf.com/linux/13854.html
Ubuntu14.04下安装OpenCV 3.0.RC1:http://www.linuxdiyf.com/linux/13355.html
Ubuntu 14.04下OpenCV 3.0+Python 2.7安装测试:http://www.linuxdiyf.com/linux/11903.html
Ubuntu 12.04下安装OpenCV 2.3.1,图像二值化:http://www.linuxdiyf.com/linux/8615.html