发布时间:2022-08-19 14:30
转载: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