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= -h= -s= -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\\.jpg D:\\Users\\jack\\Desktop\\ForTheOpencv\\.jpg -o=outWarp.ecc -m=homography -e=1e- -N= -v=
image_sequence.cpp 用VideoCapture 读取连续的 图像序列,挺实用的一个例子。 下面是一个调用的命令参数格式 C:\Users\Administrator\Desktop\matlabEyeTraking\\%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 两个类通过键盘上的按键来确定当前类,用鼠标在弹出的窗口上点击一些点作为训练点,用0 1两个按键来控制当前点的类别(红色和绿色)最后输入字幕r即可看分类效果。程序把二维空间分类成两个部分。方法有EM KNN SVM 决策树,adaboost, gradient boosted trees, 随机森林,神经网络等方法。是一个比较好的机器学习的demo。
polar_transforms.cpp This program illustrates Linear-Polar and Log-Polar image transforms 极坐标转换,在命令参数中输入数字()打开摄像头或者输入完整的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 这两个都是机器学习的代码,以后专门写一个吧。
opencv3.1自带demo的介绍和运行操作。转载的更多相关文章
- Unity3D自带Demo AngryBots路径
[Unity3D自带Demo AngryBots路径] 1.Windows: C:\Users\Public\Documents\Unity Porjects 2.MacOSX: /Users/Sha ...
- android 一个SQLite数据库多个数据表的基本使用框架 (带demo)
android 一个SQLite数据库多个数据表(带demo) 前言 demo演示 一.搭建 二.建立实体类 三.建立数据库操作类 ...
- vivado2016.2下系统自带DDR3 ip例程仿真运行
背景:从ISE14.7迁移到vivado2016.2. xilinx的软件改的真是不一般的大.两个软件操作差距真是让人想骂人.由于项目需要,准备调试DDR3.对于新手来说,例化一个DDR3 ip.如果 ...
- Demo+在Linux下运行(CentOS7+dotnetcore sdk)
来份ASP.NET Core尝尝 0x01.前言 学习ASP.NET Core也有一段时间了,虽说很多内容知识点还是处于一知半解的状态,但是基本的,还是 略懂一二.如果有错误,还望见谅. 本文还是和之 ...
- [20170629]带过滤的复制项UI操作导致订阅全部初始化问题
[问题] 带过滤的复制项UI操作导致订阅全部初始化,但是想不全部初始化,只初始化对应的复制项 [解决] 1.如果修改过滤项,可以直接执行,然后生成快照: -- Adding the article ...
- (转)私有代码存放仓库 BitBucket介绍及入门操作
转自:http://blog.csdn.net/lhb_0531/article/details/8602139 私有代码存放仓库 BitBucket介绍及入门操作 分类: 研发管理2013-02-2 ...
- 进击的Python【第十二章】:mysql介绍与简单操作,sqlachemy介绍与简单应用
进击的Python[第十二章]:mysql介绍与简单操作,sqlachemy介绍与简单应用 一.数据库介绍 什么是数据库? 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,每个数 ...
- 2 Spark角色介绍及运行模式
第2章 Spark角色介绍及运行模式 2.1 集群角色 从物理部署层面上来看,Spark主要分为两种类型的节点,Master节点和Worker节点:Master节点主要运行集群管理器的中心化部分,所承 ...
- docker 介绍及安装操作
docker 介绍及安装操作 1.docker概述 2.docker安装及操作 1.docker概述: Docker是一个开源的应用容器引擎,基于go语言开发并遵循了apache2.0协议开源 是在L ...
随机推荐
- Linux负载均衡软件LVS之三(配置篇)
LVS集群有DR.TUN.NAT三种配置模式,可以对www服务.FTP服务.MAIL服务等做负载均衡,下面通过搭建www服务的负载均衡实例,讲述基于DR模式的LVS集群配置. 一. Director ...
- json文件报expected name at 1 1错误
在eclipse编辑json文件时出现expected name at 1 1错误,解决方式如下: 方法一:json文件是不支持注释的,把所有/* content */删除即可 如果不想删除注释-- ...
- spring_boot打jar包及打包错误的解决方法
问题产生及解决 对于刚接手spring_boot的人,可能会感觉到很茫然无措,看到书上写的spring_boot是直接打包成jar包,使用java -jar *运行.然而却不知道该怎么打包.而创建sp ...
- openresty 前端开发轻量级MVC框架封装一(控制器篇)
通过前面几章,我们已经掌握了一些基本的开发知识,但是代码结构比较简单,缺乏统一的标准,模块化,也缺乏统一的异常处理,这一章我们主要来学习如何封装一个轻量级的MVC框架,规范以及简化开发,并且提供类似p ...
- jquery中动态新增的元素节点无法触发事件解决办法
在使用jquery中动态新增的元素节点时会发现添加的事件是无法触发的,我们下面就为各位来详细的介绍此问题的解决办法. 比如做一个ajax读取留言列表的时候,每条留言后面有个回复按钮,class为“re ...
- Oracle怎么更改用户名和密码
通过修改ORACLE基表的方式来修改用户名直接修改底层表USER$更改用户名(该方法在Oracle9i,Oracle10g中测试通过)SQL> UPDATE USER$ SET NAME='TT ...
- Secondary Namenode - What it really do?
原文链接:http://blog.madhukaraphatak.com/secondary-namenode---what-it-really-do/ Secondary Namenode is o ...
- PRML 第一章mindmap
PRML读了很长时间了,但是一直没有完全搞明白,很多概念都是不太清楚,于是从第一章开始重读.读的过程中会将这个内容结构用mindmap的形式记录下来,一是通过这种方式帮助自己理清楚思路,二是在之后可以 ...
- 简单的HTML注册界面
<html><head><title>我的第一个HTML页面</title></head><body><center> ...
- js格式化时间为JSON格式 ajax提交 后台处理
var effectRow = new Object();if ($('#grd_infos').datagrid('getChanges').length) { var update = $( ...