opencv
文章平均质量分 80
曼陀罗彼岸花
毕业小硕,主研机器视觉,图像处理方向,专注于图像分类,识别,机器视觉方面的研究,愿结识广大同道中人,共同学习!
展开
-
OpenCV学习笔记-自适应阈值化
自适应阈值化的函数为:AdaptiveThreshold自适应阈值方法void cvAdaptiveThreshold( const CvArr* src, CvArr* dst, double max_value, int adaptive_method=CV_ADAPTIVE_THRESH_MEAN_C,原创 2014-03-10 22:08:12 · 1253 阅读 · 0 评论 -
opencv 配置(vs2012)
1 opencv下载,下载网站http://opencv.org/,针对不同的版本选择合适的下载地址,最新的版本是2.62、运行OpenCV-2.4.3.exe解压(不是安装)到放置OpenCV的位置,例如E:\Program Files\OpenCV243可以看到,解压后在这个文件夹里面会生成一个文件夹“opencv”,里面就是OpenCV用到的全部文件了,比如“build”、“includ原创 2014-04-01 20:44:17 · 1014 阅读 · 0 评论 -
学习OpenCV(三)用filter2D实现矩阵掩码操作
在对数字图像进行处理时,我们一般都会在空间域(spatial domain)或者频域(frequency domain)中进行。所谓“空间域”,实际上指的是图像本身,在空间域上的操作常常是改变像素点的值,也就是经过一个映射(我们所做的变换,如滤波等),将原来的f(x,y)变换为新的g(x,y)。而“频域”,它的数学基础是法国学者傅里叶提出的傅里叶级数和随后发展起来的傅里叶变换。在这其中起到重要作用转载 2014-03-25 19:51:53 · 1263 阅读 · 0 评论 -
霍夫变换直线检测houghlines及opencv的实现分析
导读:1. houghlines的算法思想2. houghlines实现需要考虑的要素3. houghlines的opencv实现,代码分析4. houghlines的效率分析,改进1. houghlines的算法思想检测直线,houghlines标准算法,不考虑线段,不检测线段端点。在直角坐标系和极坐标系的对应关系,点、直线在两个坐标系中是对偶关系。即直角转载 2014-03-25 09:55:40 · 2259 阅读 · 0 评论 -
OpenCV学习(五)平滑滤波
在图像处理中,会用到对图像的平滑处理。平滑常常被用来消除图像的噪声,下面介绍几个常用于图像平滑处理的函数。(1)blur平滑处理常常用到的是线性滤波器。线性滤波器的数学基础建立在卷积的概念之上。对于一个线性滤波器,变换之后图像的输出值其实就是该点的某个邻域内各点输入像素值的加权求和。假如我们现在有一幅M*N的图像要进行线性滤波,我们采用的卷积核(kernel)的大小为m*n,那么处转载 2014-03-25 20:37:45 · 1877 阅读 · 0 评论 -
【OpenCV】图像几何变换:旋转,缩放,斜切
几何变换几何变换可以看成图像中物体(或像素)空间位置改变,或者说是像素的移动。几何运算需要空间变换和灰度级差值两个步骤的算法,像素通过变换映射到新的坐标位置,新的位置可能是在几个像素之间,即不一定为整数坐标。这时就需要灰度级差值将映射的新坐标匹配到输出像素之间。最简单的插值方法是最近邻插值,就是令输出像素的灰度值等于映射最近的位置像素,该方法可能会产生锯齿。这种方法也叫零阶插值转载 2014-03-25 22:07:08 · 1208 阅读 · 0 评论 -
opencv 霍夫变换检测直线
[cpp] view plaincopy#include #include #include #include using namespace std; int main() { IplImage *srcRGB = cvLoadImage("f:\\image转载 2014-03-25 10:02:02 · 1673 阅读 · 1 评论 -
实现自己的线性滤波器
目的本篇教程中,我们将学到:用OpenCV函数 filter2D 创建自己的线性滤波器。原理Note 以下解释节选自Bradski and Kaehler所著 Learning OpenCV 。卷积高度概括地说,卷积是在每一个图像块与某个算子(核)之间进行的运算。核是什么?核说白了就是一个固定大小的数值转载 2014-03-25 19:13:50 · 824 阅读 · 0 评论 -
opencv 中的cvMat详解
1 cvMat简介图像在计算机中是以数组的形式存放的,Mat是OpenCV中用于存放图像的数据结构。通过调用相关方法,我们能够实现对图像的输入输出以及一些操作。同时,Mat又不止可以作为图像容器,它也可以作为一种比较纯粹的描述矩阵这种数学对象的结构。它比C中的IplImage好的地方在于,由于它的“计数器”机制,我们不需要对它进行手动的内存回收,从而避免了常常困扰C/C++程序员的“内存泄原创 2014-03-25 20:34:18 · 17863 阅读 · 0 评论 -
opencv图像基础知识
1 Opencv读取图像(1)通常我都用cvLoadimage()函数进行读图像,参数选择上建议大家选择CV_LOAD_IMAGE_ANYDEPTH| CV_LOAD_IMAGE_ANYCOLOR,这样的参数组合读出的图像信息保持了原是图像的信息(包括通道信息和位深信息)。其中像素深度指每个通道用多少位来表示,通道就是指每个像素的颜色数了。而我们一般在图像处理书上看到的图像的像素的bit数原创 2014-06-04 20:41:37 · 1658 阅读 · 0 评论 -
霍夫变换
目标在这个部分您将学习到:使用OpenCV的以下函数 HoughLines 和 HoughLinesP 来检测图像中的直线.原理Note 以下原理的说明来自书籍 学习OpenCV 作者Bradski和Kaehler.霍夫线变换霍夫线变换是一种用来寻找直线的方法.是用霍夫线变换之前, 首先要对图像进行边缘检测的处理,也即霍夫线变转载 2014-03-25 10:39:19 · 2064 阅读 · 0 评论 -
【Visual C++】关于无法打开包括文件:“StdAfx.h”或者意外结尾的错误解决方案
最近有朋友在编译我提供的【Visual C++】游戏开发某一节笔记的源代码的时候,提到出现 “fatal error C1083: 无法打开包括文件:“StdAfx.h”这个错误。这里我专门找了点资料,然后部分修改,写成了一篇博文发出来,希望能对出现这个问题的朋友们有所帮助。这个错误大都是由于预编译头文件及#include这两者的关系纠缠不清引起的,呵呵。这里我们采用vs2转载 2014-05-15 21:29:59 · 12951 阅读 · 0 评论 -
Harris角点检测
Harris角点检测1角点特点角点:简单理解就是在两个明显不同方向上梯度有明显变化的点,就是在水平、竖直两个方向上变化均较大的点,即Ix、Iy都较大。边缘:若仅仅在某一个方向上梯度明显变化,即仅在水平、或者仅在竖直方向有较大的变化量,即Ix和Iy只有其一较大 则该点为边界上的点,平坦地区:若任何方向上梯度都没有明显变化,即在水平、竖直方向的变化量均较小,即Ix、Iy都较小,则该点在原创 2014-03-30 22:29:07 · 1741 阅读 · 0 评论 -
HOG特征
HOG特征概述HOG即histogram of oriented gradient, 是用于目标检测的特征描述子,该技术将图像局部出现的方向梯度次数进行计数,该方法和边缘方向直方图、scale-invariant feature transform类似,不同的是hog的计算基于一致空间的密度矩阵来提高准确率。Navneet Dalal and Bill Triggs首先在05年的CVP原创 2015-08-03 15:39:27 · 6061 阅读 · 0 评论 -
图像连通域分析
一、前言二值图像,顾名思义就是图像的亮度值只有两个状态:黑(0)和白(255)。二值图像在图像分析与识别中有着举足轻重的地位,因为其模式简单,对像素在空间上的关系有着极强的表现力。在实际应用中,很多图像的分析最终都转换为二值图像的分析,比如:医学图像分析、前景检测、字符识别,形状识别。二值化+数学形态学能解决很多计算机识别工程中目标提取的问题。二值图像分析最重要的方法就是连通区域标转载 2016-04-29 10:17:07 · 57342 阅读 · 9 评论 -
解决Opencv高低版本不兼容问题
目前OpenCV版本已更新到2.4...由此出现了一系列问题,解决如下:1、cxcore.h等头文件找不到:法一、将opencv1.0中的各种.h或者.lib文件拷到opencv2.3.1对应include/library的路径的文件夹下。e.g. Cannot open include file: 'cxtypes.h': No such file or转载 2014-03-21 16:27:50 · 1303 阅读 · 0 评论 -
OpenCV在Android平台上的应用
今年8月份, OpenCV 2.3.1发布了. 虽然从2.2开始, OpenCV就号称支持Android平台, 但真正能让OpenCV在Android上运行起来还是在2.3.1版本上. 在这个版本上, 我们可以使用Android的Camera,也可以使用OpenCV自带的VideoCapture. 大部分重要的API已经封装成了JAVA接口,可以在Android中直接调用. 比如imread,转载 2014-03-21 16:05:26 · 960 阅读 · 0 评论 -
【OpenCV】直方图应用:直方图均衡化,直方图匹配,对比直方图
前面介绍了 数字图像灰度直方图,现在来尝试直方图的应用。直方图均衡化直方图均衡化(Histogram Equalization)是直方图最典型的应用,是图像点运算的一种。对于一幅输入图像,通过运算产生一幅输出图像,点运算是指输出图像的每个像素点的灰度值由输入像素点决定,即:直方图均衡化是通过灰度变换将一幅图像转换为另一幅具有均衡直方图,即在每个灰度级上都具有相同转载 2014-03-10 21:55:10 · 1301 阅读 · 0 评论 -
一种细化算法及其与opencv的实现
是根据图像中像素点得八个相邻点得情况,得到一个索引值,然后查表,如果为0怎保留该点,否则删除算法代码:[cpp] view plaincopy#include "stdafx.h" #include "cv.h" #include "highgui.h" #include "cxcore.h" #include转载 2014-03-10 22:05:38 · 787 阅读 · 0 评论 -
基于opencv和c++的图像处理:直方图匹配
在冈萨雷斯的那本《数字图像处理》中提到了一种神奇的变换:直方图匹配变换(Histogram Matching), 输入两幅图A和B,A和B的直方图不同,直方图匹配变换是这样的一个变换s = F(r), 使得变换之后,A的直方图和B的直方图一样。也就是它们的颜色分布变成一样。 比如下面两幅图:一个沙漠,一个海滩,它们的RGB直方图显然是不一样的。但是执行直方转载 2014-03-11 11:36:40 · 2423 阅读 · 0 评论 -
OpenCV实现验证otsu算法
otsu法(最大类间方差法,有时也称之为大津算法)使用的是聚类的思想,把图像的灰度数按灰度级分成2个部分,使得两个部分之间的灰度值差异最大,每个部分之间的灰度差异最小,通过方差的计算来寻找一个合适的灰度级别 来划分。 所以 可以在二值化的时候 采用otsu算法来自动选取阈值进行二值化。otsu算法被认为是图像分割中阈值选取的最佳算法,计算简单,不受图像亮度和对比度的影响。因此,使类间方差最大的分割转载 2014-03-10 22:45:04 · 832 阅读 · 0 评论 -
基于opencv和c++的图像处理:直方图均衡化
一般而言,图片有RGB三通道,每个通道用一个byte表示,取值范围在0到255之间。对于每个通道,我们都可以计算图像的直方图,其实就是统计每个像素值的出现频率,如下图所示: 直方图均衡化的效果,即把原图的三通道的直方图变成均匀分布,每种像素值出现的次数都差不多,下面是直方图均衡化后的效果(直方图是用光影查看的,生成效果图的代码见后):转载 2014-03-11 11:35:32 · 2063 阅读 · 0 评论 -
Canny边缘检测算法原理及其VC实现详解(一)
图象的边缘是指图象局部区域亮度变化显著的部分,该区域的灰度剖面一般可以看作是一个阶跃,既从一个灰度值在很小的缓冲区域内急剧变化到另一个灰度相差较大的灰度值。图象的边缘部分集中了图象的大部分信息,图象边缘的确定与提取对于整个图象场景的识别与理解是非常重要的,同时也是图象分割所依赖的重要特征,边缘检测主要是图象的灰度变化的度量、检测和定位,自从1959提出边缘检测以来,经过五十多年的发展,已有许多中不转载 2014-03-12 20:14:25 · 821 阅读 · 0 评论 -
动态库与静态库的区别
.dll是在你的程序运行的时候才连接的文件,因此它是一种比较小的可执行文件格式,.dll还有其他的文件格式如.ocx等,所有的.dll文件都是可执行。 .lib是在你的程序编译连接的时候就连接的文件,因此你必须告知编译器连接的lib文件在那里。一般来说,与动态连接文件相对比,lib文件也被称为是静态连接库。当你把代码编译成这几种格式的文件时,在以后他们就不可能再被更改。如果转载 2014-03-12 20:18:44 · 716 阅读 · 0 评论 -
opencv 霍夫变换检测圆cvHoughCircles
[cpp] view plaincopyCVAPI(CvSeq*) cvHoughCircles( CvArr* image, void* circle_storage, int method, double dp, double min_dist,转载 2014-03-08 12:56:01 · 1458 阅读 · 0 评论 -
再谈OpenCV
尽管之前写过一篇关于OpenCV的介绍(http://blog.csdn.net/carson2005/article/details/5822149),但依然有朋友对其不甚了解。所以,经常能碰到有人问我诸如以下一些问题:OpenCV能不能实现人脸识别?OpenCV有没有车辆检测的API?OpenCV有没有三维重建的函数?面对这样的问题,我也很困惑。到底该如何给他们解释,才能让它们明白,OpenC转载 2014-03-12 20:18:09 · 780 阅读 · 0 评论 -
Hough变换-理解篇(1)(转)
霍夫变换(Hough Transform)是图像处理中的一种特征提取技术,它通过一种投票算法检测具有特定形状的物体。该过程在一个参数空间中通过计算累计结果的局部最大值得到一个符合该特定形状的集合作为霍夫变换结果。霍夫变换于1962年由Paul Hough 首次提出[53],后于1972年由Richard Duda和Peter Hart推广使用[54],经典霍夫变换用来检测图像中的直线,后来霍夫变换转载 2014-03-08 12:08:05 · 967 阅读 · 0 评论 -
opencv 关于 cvCalcHist的含义(1)
代码演示:[cpp] view plaincopy#include #include #include #include using namespace std; int main() { IplImage *src = cvLoadImage("f:\\images\转载 2014-03-08 20:53:03 · 822 阅读 · 0 评论 -
学习opencv ,图像分割中分水岭算法的感性认识及cvWatershed例子
cvWatershed例子:[cpp] view plaincopy#include #include #include using namespace std; IplImage* marker_mask = 0; IplImage* markers = 0; IplImage* img转载 2014-03-08 12:58:00 · 1720 阅读 · 0 评论 -
opencv 霍夫变换检测直线(转)
[cpp] view plaincopy#include #include #include #include using namespace std; int main() { IplImage *srcRGB = cvLoadImage("f:\\image原创 2014-03-08 12:06:50 · 1153 阅读 · 0 评论 -
otsu
IplImage* binaryImage=cvCreateImage(cvGetSize(imageIn), IPL_DEPTH_8U,1);cvThreshold(imageIn,binaryImage,graythresh,255,CV_THRESH_BINARY);其中,imageIn是输入图像,graythresh是用otsu法得到的阈值(如果是二维,可以取出表示阈值的那一维的值),转载 2014-03-10 17:19:23 · 790 阅读 · 0 评论 -
点到直线的距离opencv实现
数学几何代数中有点到直线的公式:点P(x0,y0)到直线Ax+By+C=0的距离:(当然也可直接用向量法求出余弦角,再用正弦求得距离)//p.s. 直线公式用两点式转换成一般式 //param p1:线外的点 //param lp1: 线的起点 //param lp2: 线的终点 //return 距离#include "math.h"原创 2014-03-30 20:17:44 · 8835 阅读 · 1 评论 -
Opencv运动物体常用的特征提取与匹配方法
Opencv运动物体常用的特征提取与匹配方法提取图像空间关系特征可以有两种方法:1) 首先对图像进行自动分割,划分出图像中所包含的对象或颜色区域,然后根据这些区域提取图像特征,并建立索引;(分割——块特征——索引)2) 简单地将图像均匀地划分为若干规则子块,然后对每个图像子块提取特征,并建立索引。 姿态估计问题:确定某一三维目标物体的方位指向问题。姿态估计在机器人视觉、动作原创 2014-06-04 15:33:52 · 4898 阅读 · 0 评论