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 ...
随机推荐
- 从零开始学C++之IO流类库(二):文件流(fstream, ifstream, ofstream)的打开关闭、流状态
一.文件流 ofstream,由ostream派生而来,用于写文件 ifstream,由istream派生而来, 用于读文件 fstream,由iostream派生而来,用于读写文件 二.打开文件 说 ...
- transaction manager has disabled its support for remote/network transactions. 该伙伴事务管理器已经禁止了它对远程/网络事务
最近再用SSIS做数据归档,里面用到了分布式事务.在开发阶段是在一台计算机上运行只要是启动分布式服务就没什么问题,可是昨天把它部署到uat的时候遇到问题,错误信息是: 最后找到解决方案: 确认&quo ...
- 使用 EasyUI 创建左侧导航菜单
使用 JQuery EasyUI 创建左侧导航菜单,菜单的数据由后台服务提供. 效果图 HTML 元素 <div id="menuAccordion"></div ...
- 维吉尼亚密码java完整版
package cn.longxuzi; import org.junit.Test; public class Chi_SquareUtils { private static final ICUt ...
- .Net多线程编程—同步机制
1.简介 新的轻量级同步原语:Barrier,CountdownEvent,ManualResetEventSlim,SemaphoreSlim,SpinLock,SpinWait.轻量级同步原语只能 ...
- pb_ds(平板电视)整理
有人说BZOJ3040用普通的<queue>中priority_queue搞dijkstra过不了. 我只想说你们的djk可能写的太丑了. 先上代码 #include<iostrea ...
- Cocos2d-x 3.x事件分发机制总结
在2.x中处理事件需要用到委托代理(delegate),相信学过2.x的触摸事件的同学,都知道创建和移除的流程十分繁琐.而在3.x中由于加入了C++11的特性,而对事件的分发机制通过事件分发器Even ...
- js 技巧1
1. 使用===取代== ==和!=操作符会在需要的情况下自动转换数据类型.但===和!==不会,它们会同时比较值和数据类型,这也使得它们要比==和!=快. "){ //速度慢 } & ...
- Qt编译
版本及安装环境 项目 版本 位 Windows 7 x64 Visual Studio 2010 x64 qt 4.8.6 x64 下载源码 进入下载列表,下载qt-everywhere-openso ...
- 简单入门使用GitHub总结
简单入门使用GitHub总结 ps: 试着自己弄一下GitHub,发现问题多多,中间还差点把自己的资料给全部弄没了(直接摔啦~). 然后网上查找各种资料进行设置终于成功了. 以下是参考的资料链接: G ...