opencv
文章平均质量分 84
傲慢的上校-东北
这个作者很懒,什么都没留下…
展开
-
读取、修改、保存图像---opencv
目标如下,将学习如何使用:图像读取 imread图像颜色空间的转换 cvtColor图像保存至硬盘 (using imwrite)代码代码如下: 1 2 3 4 5 6 7 8 9101112131415161718192021222324252627282930313原创 2013-09-02 19:20:57 · 667 阅读 · 0 评论 -
OpenCV实现验证otsu算法
otsu法(最大类间方差法,有时也称之为大津算法)使用的是聚类的思想,把图像的灰度数按灰度级分成2个部分,使得两个部分之间的灰度值差异最大,每个部分之间的灰度差异最小,通过方差的计算来寻找一个合适的灰度级别 来划分。 所以 可以在二值化的时候 采用otsu算法来自动选取阈值进行二值化。otsu算法被认为是图像分割中阈值选取的最佳算法,计算简单,不受图像亮度和对比度的影响。因此,使类间方差最大的分割转载 2013-09-04 11:03:45 · 815 阅读 · 0 评论 -
OpenCV图象孔洞内轮廓填充
图像内轮廓填充通常称为孔洞填充,主要用于目标提取。不带任何条件的内轮廓填充,在目标密度很大时,可能导致错误填充。一种典型情况,当多个目标粘连,并 且形成环状时,简单的内轮廓填充会将环状内部背景部分误认为目标空洞进行错误填充。这种错误对于目标分割和提取是非常致命的。 如果将内轮廓面积作为限制条件进行填充,就可以很好解决上述问题。通常内轮廓面积应该不大于目标的最大面积。转载 2013-09-04 10:36:07 · 1536 阅读 · 0 评论 -
OpenCV中使用神经网络 CvANN_MLP
OpenCV的ml模块实现了人工神经网络(Artificial Neural Networks, ANN)最典型的多层感知器(multi-layer perceptrons, MLP)模型。由于ml模型实现的算法都继承自统一的CvStatModel基类,其训练和预测的接口都是train(),predict(),非常简单。下面来看神经网络 CvANN_MLP 的使用~定义神经网络转载 2013-09-04 11:32:19 · 1498 阅读 · 0 评论 -
OpenCV图像内轮廓填-孔洞填充
图像内轮廓填充通常称为孔洞填充,主要用于目标提取。[cpp] view plaincopy//test #include "stdafx.h" #include "cxcore.h" #include "cv.h" #include "highgui.h" // 内轮廓填充 // 参数转载 2013-09-04 10:32:14 · 5594 阅读 · 0 评论 -
OpenCV函数cvDistTransform-距离变换
简介图像的距离变换被定义为一幅新的图像,该图像的每个输出像素被设成与输入像素中0像素最近的距离。显然,典型的距离变换的输入应为某些边缘图像。在多数应用中,距离变换的输入是例如Canny 边缘检测的检测图像的转换输出(即边缘的值是0,非边缘的是非0)。[cpp] view plaincopy#include #inc转载 2013-09-04 10:24:26 · 921 阅读 · 0 评论 -
OpenCV统计米粒数目-计算联通区域的个数及联通区域内像素的个数
基于对话框的程序。实现界面:打开图片的消息响应函数:[cpp] view plaincopyvoid CcountRiceDlg::OnBnClickedOpen() { // TODO: 在此添加控件通知处理程序代码 TCHAR szFilters[]=_T("B转载 2013-09-04 10:28:59 · 3220 阅读 · 1 评论 -
【OpenCV】图像几何变换:旋转,缩放,斜切
几何变换几何变换可以看成图像中物体(或像素)空间位置改变,或者说是像素的移动。几何运算需要空间变换和灰度级差值两个步骤的算法,像素通过变换映射到新的坐标位置,新的位置可能是在几个像素之间,即不一定为整数坐标。这时就需要灰度级差值将映射的新坐标匹配到输出像素之间。最简单的插值方法是最近邻插值,就是令输出像素的灰度值等于映射最近的位置像素,该方法可能会产生锯齿。这种方法也叫零阶插值转载 2013-09-04 11:10:32 · 736 阅读 · 0 评论 -
OpenCV函数cvWatershed图像分割中分水岭算法
[cpp] view plaincopy#include #include #include #pragma comment(lib, "cv.lib") #pragma comment(lib, "cxcore.lib") #pragma comment(lib, "highgui.lib") using nam转载 2013-09-04 11:12:58 · 1133 阅读 · 0 评论 -
OpenCV主成分分析PCA
机器学习方面的降维讲解(PCA原理,奇异值分解):http://blog.csdn.net/abcjennifer/article/details/8002329 在图形识别方面,主成分分析(Principal Comonents Analysis,PCA)算是比较快速而且又准确的方式之一,它可以对抗图形平移旋转的事件发生,并且藉由主要特征(主成分)投影过后的数据做数据的比转载 2013-09-04 10:52:59 · 821 阅读 · 0 评论 -
SVM支持向量机(Support Vector Machine)-翻译版
第一个支持向量机(SupportVector Machine) CvSVM利用SVM解决2维空间向量的3级分类问题#include #include #include #include int main(int argc, char **argv){ intsize= 400; //图像的长度和宽度 in转载 2013-09-04 10:51:01 · 957 阅读 · 0 评论 -
OpenCV实现图像的旋转
最近搞研究实现程序过程中,需要将图像旋转,opencv包中居然没有提供相关函数。到网上一查,牛人实现的方法多种多样,最后发现这个挺好的,绝对可靠,转载一下。其中原文有个错误,自己加了点东西,反正是为了方便自己和他人。呵呵![cpp] view plaincopy#include "cv.h" #include "high转载 2013-09-04 10:50:02 · 662 阅读 · 0 评论 -
【OpenCV】分离多通道图像RGB的值
在《访问图像中每个像素的值》中我们介绍了存储图像的结构体IplImage的数据结构。多通道字节/浮点型图像中存储了每个像素RGB三信道的值。最近在做的项目中需要提取图像ROI区域RGB的平均值,发现有一个cvAvg函数:[cpp] view plaincopyCvScalar cvAvg( const CvArr* arr, cons原创 2013-09-02 14:20:34 · 960 阅读 · 0 评论 -
opencv 删除二值化图像中面积较小的连通域
对于上图的二值化图像,要去除左下角和右上角的噪点,方法:使用opencv去掉黑色面积较小的连通域。代码[cpp] view plaincopy CvSeq* contour = NULL; double minarea = 100.0; double tmparea = 0.0; CFi原创 2013-09-02 14:46:56 · 6856 阅读 · 0 评论 -
OpenCV学习笔记(五十七)——在同一窗口显示多幅图片
闲话少说,今天不介绍复杂的算法了,来个简单的,大家写文章做图经常用Matlab,在Matlab里经常在一个窗口里打开多幅图片。遗憾的是OpenCV没有集成这样的功能,但这难不倒大家,让我试试用ROI来解决这个问题。没啥好讲的,上代码好了:[cpp] view plaincopyvoid imshowMany(const std::st原创 2013-09-02 14:35:39 · 671 阅读 · 0 评论 -
关于轮廓的各种使用
#include "cv.h" #include "highgui.h" #include "cvaux.h" #include "cxcore.h" #include #include using namespace std; using namespace cv; #define PI 3.14159f void DrawB原创 2013-09-02 14:47:27 · 709 阅读 · 0 评论 -
OpenCV学习笔记-图像金字塔
图像金字塔所用函数为:[cpp] view plaincopyPyrDown 图像的下采样 void cvPyrDown( const CvArr* src, CvArr* dst, int filter=CV_GAUSSIAN_5x5 ); src 输入图像. dst 输出图像, 宽度和高度应是输入图像的原创 2013-09-02 15:28:35 · 667 阅读 · 0 评论 -
基础学习笔记之opencv(18):kmeans函数使用实例
前言 一提到聚类算法,必然首先会想到的是kmeans聚类,因为它的名气实在太大了。既然这样,OpenCV中这个函数也自然必不可少了。这节内容主要是讲讲OpenCV中kmeans函数的使用方法。 开发环境:OpenCV2.4.3+QtCreator2.5.1 实验基础 在使用kmeans之前,必须先了解kmeans算法的2个缺点:第一是必须人为指定所转载 2013-09-03 14:43:50 · 1563 阅读 · 0 评论 -
k-means算法及opencv实现
K-means算法是最为经典的基于划分的聚类方法,是十大经典数据挖掘算法之一。K-means算法的基本思想是:以空间中k个点为中心进行聚类,对最靠近他们的对象归类。通过迭代的方法,逐次更新各聚类中心的值,直至得到最好的聚类结果。 假设要把样本集分为c个类别,算法描述如下:(1)适当选择c个类的初始中心;(2) 在第k次迭代中,对任意一样本,求其到c个中心的距离,将其转载 2013-09-03 14:38:38 · 998 阅读 · 0 评论 -
OpenCV通过Harr分类器人脸识别
[cpp] view plaincopy#include #include #include #include #include #include //用于防御式编程 #include #include //与一样是定义边界值的,定义的是浮点数的边界值 #include #include转载 2013-09-04 10:34:12 · 922 阅读 · 0 评论 -
Opencv入门教程之使用Opencv进行模式识别与分类
本章中,主要介绍一些模式识别的基础概念。在模式识别中,对元素进行分类之前,我们需要采集样本进行训练。本章的实例中,训练了3个类,每一个类采集了100个样本。对于训练,需要创建两个矩阵,一个是用于存储样本数据的矩阵,一个用于与数据对应的类的标号:Int train_sample_count=300;//总共300个样本CvRNG rng_state = cvRNG(-原创 2013-09-15 15:33:56 · 2682 阅读 · 0 评论