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

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

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

值得注意的是,控制台程序输入有时候要在图像所在的窗口输入相应的指令。我的电脑上安装了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<SURF<BRISK<FREAK<ORB 在对有较大模糊的图像配准时,BRISK算法在其中表现最为出色。这几个特征点匹配的方法。
minarea.cpp 计算最小外接圆,矩形和三角形的函数。
morphology2.cpp 形态学的开运算,闭运算,膨胀腐蚀的示例
npr_demo.cpp  非真实渲染,给图片增强、模糊,转化成水彩或者铅笔图等。
opencv_version.cpp  输出opencv版本号
openni_capture.cpp  深度相机的采集(Kinect等)
pca.cpp   PCA降维,在命令参数中输入一个list,list可以是一个txt之类的文本文件,文本每一行是一张图片的完整路径。可以下载作者提供的人脸数据库,最后降维成特征脸。
phase_corr.cpp  相位相关法(phase correlate)可以用于检测两幅内容相同的图像之间的相对位移量,本程序调用摄像头,直接计算两帧之间的相对运动并显示出了,速度比较快,但是效果不一定很好。可以做稳像,防抖之类的吧
points_classifier.cpp  点分类器,只有0 1 两个类通过键盘上的按键来确定当前类,用鼠标在弹出的窗口上点击一些点作为训练点,用0 1两个按键来控制当前点的类别(红色和绿色)最后输入字幕r即可看分类效果。程序把二维空间分类成两个部分。方法有EM KNN SVM 决策树,adaboost, gradient boosted trees, 随机森林,神经网络等方法。是一个比较好的机器学习的demo。
polar_transforms.cpp  This program illustrates Linear-Polar and Log-Polar image transforms  极坐标转换,在命令参数中输入数字(0)打开摄像头或者输入完整的avi路径和文件名即可运行。
segment_objects.cpp  混合高斯模型的前背景分割用了联通阈分析形态学运算之类的来进一步refine前景和背景,可以通过空格键控制是否学习背景。 默认打开摄像头,也可以用完整的avi路径作为输入。
select3dobj.cpp  这个需要先标定相机的内参,本程序能够实时的矫正畸变。据说还有一些grabcut和3d的track的功能,但我运行的时候总有bug,没试出,大家可以自己试试吧,我放弃了。
shape_example.cpp  shape context形状匹配算法。可以对比形状的相似性。用的是轮廓点的坐标作为输入。
smiledetect.cpp 笑脸检测,效果还是可以的,速度略慢,用一个bar来输出笑脸的分数。
squares.cpp 矩形检测,检测图像中的矩形(挺实用的)
starter_imagelist.cpp 上面imaglist_creator创建出的list的图像读取的demo
starter_video.cpp 打开摄像头或者avi,按下空格键就保存图像,挺实用的,比如相机标定的时候
stereo_calib.cpp  双目视觉标定,默认打开data文件夹下的图片和图片的list,list可能需要根据自己电脑修改。输出一个相机外参的文件。
stereo_match.cpp  视差图生成。输入左右两个相机的内外参数,输入左右图像以及一些其他参数,生成视差图,可能是在内参或者外参标定的时候有问题,视差图效果不好。
stitching.cpp 全景图拼接,手机随便拍了三张图,在命令参数处输入他们的地址,试了下效果还是可以,就是时间比较长用了一分多钟。
stitching_detailed.cpp  也是全景图拼接,可这个比较detail各种参数,实在不是干这个的,就不试了。
videostab.cpp 电子稳像,在命令参数输入一个画面抖动的avi文件,运行程序能自动生成画面稳定的视频,对的,就这么神奇。各种参数多多我也不想深究。
watershed.cpp 分水岭算法。运行之后在图像上用鼠标选取一些点,空格键即可运行
cpp文件夹里还有两个没试的算法 一个是tvl1_optical_flow.cpp,另一个是tree_engine.cpp 这两个都是机器学习的代码,以后专门写一个吧。
 
时间: 2024-10-16 07:00:51

opencv3.1自带demo的介绍和运行操作。转载的相关文章

Struts2+Urlrewrite实现伪静态化 demo中介绍了三种情况的配置,下载即可运行。

原文:Struts2+Urlrewrite实现伪静态化 demo中介绍了三种情况的配置,下载即可运行. 源代码下载地址:http://www.zuidaima.com/share/1550463499504640.htm 为大家提供了3种模式的url进行访问,以便应付大家的开发,更多的模式大家可以自行组合. html:http://localhost:8686/Sturts2UrlReWrite/line.html xxx::http://localhost:8686/Sturts2UrlReW

Unity3D自带Demo AngryBots路径

[Unity3D自带Demo AngryBots路径] 1.Windows: C:\Users\Public\Documents\Unity Porjects 2.MacOSX: /Users/Shared/Unity 工程目录名均为:4-0_AngryBots. Unity3D自带Demo AngryBots路径

MySQL自带工具使用介绍

MySQL自带工具使用介绍:1)mysql命令:mysql命令事是使用最多的命令工具了,为用户提供了一个命令行接口来操作管理MySQL的服务器.命令格式:Usage:mysql [OPTIONS][database]例:mysql -e "select user,host from user" mysqlmysql --help 可以得到相应的基础使用帮助信息-e : --execut=name :我们要执行-e后面的命令,但是并不通过mysql连接进入mysql交互界面.此参数在我们

android 一个SQLite数据库多个数据表的基本使用框架 (带demo)

android 一个SQLite数据库多个数据表(带demo) 前言        demo演示        一.搭建        二.建立实体类        三.建立数据库操作类        四.配置Application        五.使用    GitHub 前言 我的上一篇博客讲的是简单的 android SQLite 数据库的基本操作如增删改查,有兴趣的朋友可以点一下这里android 简单SQLite数据库 增删改查 但是呢,一般的项目里,一个数据库也不会只有一个数据表,

Demo+在Linux下运行(CentOS7+dotnetcore sdk)

来份ASP.NET Core尝尝 0x01.前言 学习ASP.NET Core也有一段时间了,虽说很多内容知识点还是处于一知半解的状态,但是基本的,还是 略懂一二.如果有错误,还望见谅. 本文还是和之前一样,Demo+在Linux下运行(CentOS7+dotnetcore sdk) 开发环境:win10+vs2015+sqlserver2014 0x02.demo 新建一个ASP.NET Core Web Application项目--Catcher.EasyDemo.Website 干掉Co

进击的Python【第十二章】:mysql介绍与简单操作,sqlachemy介绍与简单应用

进击的Python[第十二章]:mysql介绍与简单操作,sqlachemy介绍与简单应用 一.数据库介绍 什么是数据库? 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据.我们也可以将数据存储在文件中,但是在文件中读写数据速度相对较慢.所以,现在我们使用关系型数据库管理系统(RDBMS)来存储和管理的大数据量.所谓的关系型数据库,是建立在关系模型基础上的数据库,借助于集合代数等数学概念和方法来

详细介绍Flex中操作XML

一  在介绍Flex中操作XML之前,首先简单介绍下XML中的基本术语. 元素:XML中拥有开始标签和结束标签的这一块称为“元素”    节点:把XML元素与文本结合起来统称为节点    根节点:位于整个XML文当顶端的节点    文本节点:包含文本的节点    属性:元素的组成部分,以键/值形式放在元素标签内 用一个例子来说明 <root_node><!--这是一个根节点也是一个元素--> <node attribute="value"><!

Redis介绍 &amp;&amp; Java客户端操作Redis

Redis介绍 && Java客户端操作Redis 本文内容 redis介绍 redis的 shell 客户端简介 redis的 java 客户端简介 环境配置 redis 2.8.17 64bit JDK1.6 redis介绍 大多数时候,我们都将 redis 称作是内存数据库,它在运行过程中,将键值对信息存储在内存中,同时在后台以异步的形式写入本地数据库中(默认是:dump.rdb,在 redis.conf 中配置,如果需要考虑安全的持久化需求需要开启 AOF 功能,详细介绍可以查看这

QTP自带订票实现循环运行,参数化和将异常提示信息输出

做这个例子主要是为了积累一些较基础的知识,以便日后可参考学习 这个例子是一个订票的C/S客户端程序 一.业务需求: 1.实现异常和正常数据登录窗口,系统对数据进行校验 2.登录成功后,进行订票业务,涉及多人订不同时间.不同城市的机票业务 3.退出订票系统 二.自动化脚本需要实现功能: 1.多组数据登录时,数据需要参数化,并在登录窗口根据参数化数据个数进行循环登录[(1)参数化数据(2)设置脚本循环规则] 2.异常数据登录系统,系统给出校验的提示信息,需要将校验异常数据提示信息在QTP报告中展示出