opencv3.1自带demo的介绍和运行操作

转载:https://www.cnblogs.com/Anita9002/p/6237513.html

下列实验基本都试过,有些需要根据自己的电脑修改一些路径或者调试参数.

       值得注意的是,控制台程序输入有时候要在图像所在的窗口输入相应的指令。我的电脑上安装了vs2013和2015. vs2015+opencv3.1/2.4.9在我的电脑上经常有这个错误:xxxx处有未经处理的异常: 将一个无效参数传递给了将无效参数视为严重错误的函数 ,或者提示在vector.h里的错误。后来用VS2013+Opencv3.1就没有这个问题。 opencv可能还是有些bug,最好用vs2013吧. 

Opencv的 CommandLineParser类原意是让带命令参数运行的程序调用起来更方便,但是我没少被这个东西坑,老出现修改了命令参数但是程序没读到我的参数的情况(后来试着输出argv发现空格的地方是个问号“?”,也就是程序没识别出这个空格来,反正我不想管了哈哈哈),可以直接在CommandLineParser 的keys里面添加默认值,CommandLineParser类怎么用乖乖看英文文档吧。http://docs.opencv.org/3.0.0/d0/d2e/classcv_1_1CommandLineParser.html

3calibration.cpp 三个相机的标定,没有三个相机,所以没测试
autofocus.cpp 自动对焦,没有这种相机,没测试
bgfg_segm.cpp   混合高斯模型的前景背景分割
camshiftdemo.cpp camshift跟踪,默认打开摄像头,鼠标选中一个物体即可跟踪
calibration.cpp 单个摄像头标定,需要用imagelist_creator.cpp 生成一个图像文件list,一个参考的命令参数是:-w=7 -h=8 -s=30 -o=camera.yml -op -oe imagelist.yml  
cloning_demo.cpp  /cloning_gui.cpp    图像融合
connected_components.cpp   连通域分析
contours2.cpp    轮廓/绘制 轮廓
convexhull.cpp  寻找凸包
cout_mat.cpp    输出 mat中的数据
create_mask.cpp  生成剪影图,用来做图像融合之类的。用鼠标操作即可
delaunay2.cpp   随机点生成delaunay三角网,可以用来做三维重建之类的吧。
dbt_face_detection.cpp  linux下的人脸识别,没试
demhist.cpp    直方图生成 绘图
detect_blob.cpp  团块检测
detect_mser.cpp   最大稳定极值区域(MSER-Maximally Stable Extremal Regions)可以用于图像的斑点区域检测。该算法最早是由Matas等人于2002年提出,它是基于分水岭的概念。
dft.cpp   dft变换
distrans.cpp  距离变换   距离变换和线性滤波器,形态学变换处于平等位置,是图像处理的一种方法,通过使用两遍扫描光栅算法可以快速计算到曲线或点集的距离。 应用:水平集 快速斜切匹配 图像拼接 图像混合的羽化 临近点配准
drawing.cpp  直线,多边形,椭圆,文字等绘画
edge.cpp canny边缘检测
em.cpp  em聚类,em model使用的例子,可以用来预测分类、聚类,类似多个高斯函数叠加
facedetect.cpp 人脸人眼检测
facial_features.cpp    Haarcascade classifiers for face, eyes, nose and mouth 人脸,人眼,鼻子嘴巴之类的检测
 fback.cpp          稠密点的光流法跟踪       This program demonstrates dense optical flow algorithm by Gunnar Farneback\n"
ffilldemo.cpp   漫水算法
filestorage.cpp  存取文件操作,可以保存为。txt或者任何其他后缀的格式的数据
fitellipse.cpp  拖圆拟合,将图片二值化之后取轮廓,拟合。
grabcut.cpp  选取区域,前景点背景点,前背景自动分割。能反复选取前景,背景点像素,分割效果还是挺好的,另外有抓取屏幕点的操作可以借鉴。具体的算法看这个http://blog.csdn.net/zouxy09/article/details/8534954
houghcircles.cpp  霍夫圆检测
houghlines.cpp  霍夫直线检测
image.cpp  iplimag转Mat 三通道分离合并,YUY RGB转换等
image_alignment.cpp  图像配准的算法,用的是ECC图像配准方法,我所试验的几个图片配准效果都不是很好,但是有几个warp函数可以借鉴,用来旋转、平移和仿射变换等。下面是一个调用的命令参数格式。D:\\Users\\jack\\Desktop\\ForTheOpencv\\5.jpg D:\\Users\\jack\\Desktop\\ForTheOpencv\\7.jpg -o=outWarp.ecc -m=homography -e=1e-6 -N=70 -v=1
image_sequence.cpp   用VideoCapture 读取连续的 图像序列,挺实用的一个例子。  下面是一个调用的命令参数格式    C:\Users\Administrator\Desktop\matlabEyeTraking\1\%d.bmp
imagelist_creator.cpp     创建一个调用过的agv参数的list并且保存。 命令参数的格式为 xx.yml  G:\opencv31\opencv\sources\samples\data\left13.jpg 后面可以加载n个图像文件路径,用空格隔开即可。  
inpaint.cpp  应该是用来给视频或者图像“打码”的算法,通过鼠标画需要处理的部分,按下空格键处理图像。
intelperc_capture.cpp  这个好像要有英特尔的深度相机才能玩的。 This program demonstrates usage of camera supported\nby Intel Perceptual computing SDK
kalman.cpp 卡尔曼滤波的调用,生成一个随机运动的点,然后用卡尔曼滤波来预测跟踪。
kmeans.cpp K均值聚类方法,随机生成几个点云然后聚类
laplace.cpp  拉普拉斯边缘,二次微分的边缘,可用于增强之类的。
letter_recog.cpp 字符识别(分类) 可以选择 随机森林,boost ,k近邻,正态贝叶斯,SVM,多层神经网络等方法。是一个机器学习的训练和测试的demo. 通过修改命令参数测试发现,这个代码中效果最好的居然是knn. 具体问题分类的效果还是要看具体的特征,一个个试吧。
lkdemo.cpp   LK光流法跟踪,点击一些点然后可以跟踪,效果不错,速度也比较快。
logistic_regression.cpp  logistic回归做分类(二分) 用的是手写数字0和1分类,好像效果还行。
lsd_lines.cpp  lsd直线检测,效果好像比hoghline好点 短线段比较多。
mask_tmpl.cpp  用一个掩模来做模板匹配.掩模的作用是权值吧,比如寻找某些标志时候,用相同的几何形状来早匹配。不用掩模也可以做匹配。
matchmethod_orb_akaze_brisk.cpp   ORB BRISK   AKAZE特征描述子的提取和匹配,通过空格键控制不同的描述子或者匹配方式,在鲁棒性上SIFT


 

你可能感兴趣的:(opencv)