雕刻时光

just do it……nothing impossible
随笔 - 547, 文章 - 0, 评论 - 82, 阅读 - 86万
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

随笔分类 -  图像处理opencv

摘要:最大类间方差法是由日本学者大津于1979年提出的,是一种自适应的阈值确定的方法,又叫大津法,简称OTSU。它是按图像的灰度特性,将图像分成背景和目标2部分。背景和目标之间的类间方差越大,说明构成图像的2部分的差别越大,当部分目标错分为背景或部分背景错分为目标都会导致2部分差别变小。因此,使类间方差最大的分割意味着错分概率最小。对于图像I(x,y),前景(即目标)和背景的分割阈值记作T,属于前景的像素点数占整幅图像的比例记为ω0,其平均灰度μ0;背景像素点数占整幅图像的比例为ω1,其平均灰度为μ1。图像的总平均灰度记为μ,类间方差记为g。假设图像的背景较暗,并且图像的大小为M×N,图像 阅读全文

posted @ 2014-03-14 20:18 huhuuu 阅读(1695) 评论(0) 推荐(0) 编辑

摘要:有时候,我们需要提取一个图像的边缘利于计算。 opencv实现了Canny边缘检测的函数,方便调用。Canny算子的原理是首先在x,y方向求一阶导数,然后组合为4个方向的导数。这些方向的导数达到局部最大值的点就是组成边缘的候选点。 1.1cvCanny函数:CVAPI(void) cvCanny( const CvArr* image, CvArr* edges, double threshold1, double threshold2, int aperture_size CV_DEFAULT(3) ); 第一个参数:输入:是灰度图,就... 阅读全文

posted @ 2014-02-06 16:15 huhuuu 阅读(20368) 评论(6) 推荐(0) 编辑

摘要:图像处理里面缩放操作是比较常见的: 最近邻插值:类似简单映射的处理方式,目标图像w1,h1,原始图像w0,h0,则在目标图像上的点(x,y)的像素点实际对应原始图上(x*w0/w1,y*h0/h1)的像素点。优点是速度快,操作简单;缺点是图片会产生锯齿状。 线性插值:对周围的点通过不同权值的乘积,使目标点的像素会受到周围像素的影响,过度更加自然些,即不会产生锯齿状。 对于一个目的像素,设置坐标通过反向变换得到的浮点坐标为(i+u,j+v) (其中i、j均为浮点坐标的整数部分,u、v为浮点坐标的小数部分,是取值[0,1)区间的浮点数),则这个像素得值 f(i+u,j+v) 可由原图像中坐... 阅读全文

posted @ 2014-01-27 11:27 huhuuu 阅读(3122) 评论(0) 推荐(0) 编辑

摘要:在图像处理里,如果我们需要填充一个区域,使该区域为相同的颜色,则比较常用的是洪水填充法。洪水填充法可以用DFS也可以用BFS实现。 opencv下有函数实现该功能: CVAPI(void) cvFloodFill( CvArr* image, CvPoint seed_point, CvScalar new_val, CvScalar lo_diff CV_DEFAULT(cvScalarAll(0)), CvScalar up_diff CV_DEFAULT(cvScalarAll(... 阅读全文

posted @ 2014-01-24 19:06 huhuuu 阅读(7375) 评论(0) 推荐(0) 编辑

摘要:为了处理更为复杂的情况,opencv中还支持更多的形态学变换。形态学名称操作过程操作名称是否需要temp参数开操作 openopen(src)=先腐蚀,后膨胀CV_MOP_OPEN否闭操作 closeclose(src)=先膨胀,后腐蚀CV_MOP_CLOSE否形态梯度 gradientgradient(src)=dilate(scr)-erode(src)CV_MOP_GRADIENT总是“礼帽” topHattopHat(src)=src-open(src)CV_MOP_TOPHATsrc=dst的时候需要“黑帽”blackHatblackHat(src)=close(src)-src.. 阅读全文

posted @ 2014-01-21 22:39 huhuuu 阅读(5615) 评论(0) 推荐(0) 编辑

摘要:腐蚀膨胀是图像形态学比较常见的处理,腐蚀一般可以用来消除噪点,分割出独立的图像元素等。 一般腐蚀操作对二值图进行处理,腐蚀操作如下图,中心位置的像素点是否与周围领域的像素点颜色一样(即是否是白色点,即值是否为255),若一致,则保留,不一致则该点变为黑色(值即为0) opencv中的腐蚀操作:CVAPI(void) cvErode( const CvArr* src, CvArr* dst, IplConvKernel* element CV_DEFAULT(NULL), int iteratio... 阅读全文

posted @ 2014-01-21 20:53 huhuuu 阅读(28440) 评论(0) 推荐(1) 编辑

摘要:以前的时候,为了过滤图像中的一些噪点,学过一些简单的滤波,比如中值滤波,均值滤波,也是自己实现的。 在opencv中有现成的函数可以调用,实现滤波的操作。 函数的原型如下:CVAPI(void) cvSmooth( const CvArr* src, CvArr* dst, int smoothtype CV_DEFAULT(CV_GAUSSIAN), int size1 CV_DEFAULT(3), int size2 CV_DEFAULT(0), ... 阅读全文

posted @ 2014-01-21 15:52 huhuuu 阅读(19483) 评论(2) 推荐(2) 编辑

摘要:鼠标事件采用回调函数的形式,即需要鼠标处理点击移动事件的话,首先必须创建一个回调函数。 如下形式:void my_mouse_callback( //回调函数的声明,而回调函数也是需要这种参数格式 int event,int x,int y,int flags,void * param ); 第一个参数是表示鼠标的事件类型,如左键按下去,左键回上来,鼠标移动等。 有如下类型: x,y表示现在鼠标所处的位置, flags表示鼠标事件标志: 最后一个额外的指针,可以传递你所需要的数据指针,这里用来传递image的指针。 下面是注册回调函数到opencv中,... 阅读全文

posted @ 2014-01-21 11:07 huhuuu 阅读(1043) 评论(0) 推荐(0) 编辑

摘要:一般我们需要对图像直接进行操作的时候,需要知道图像存储的数据结构,这要也就知道了它的遍历方式在opencv2.4.4版本下,IplImage的数据结构如下(貌似在别的版本下差别也不会太大)其中比较重要的是width,height,imageData,widthStep。(其他的刚开始学也知道的不多- -)width,height 就是表示图像的宽度,高度,imageData是一个指向某内存空间的指针,该内存空间里面存放了图像实际像素点的颜色信息(这里是RGB信息)widthstep图像一行像素点所占的字节数,这里是三通道,所以这时widthstep =width * 3知道的上面的基本变量以后 阅读全文

posted @ 2014-01-20 16:52 huhuuu 阅读(6723) 评论(0) 推荐(0) 编辑

摘要:对实时的视屏流进行处理,实质还是对单幅图片进行处理! #include "stdafx.h"#include "cv.h"#include "highgui.h"int g_slider_position = 0;CvCapture * g_capture =NULL;void onTrackbarSlide(int pos){ //再拖动滚动条的时候,滚动条的位置会被作为int数字传入 cvSetCaptureProperty( g_capture, CV_CAP_PROP_POS_FRAMES, pos );} v... 阅读全文

posted @ 2014-01-18 21:21 huhuuu 阅读(766) 评论(0) 推荐(0) 编辑

摘要:视屏的本质是一些静态的图像的集合,opencv可以不断读取视屏中的图片,显示,就产生了类似电影的效果。 这样也就可以通过opencv对实时的视屏流进行处理了。#include "stdafx.h"#include "cv.h"#include "highgui.h"int main(){ cvNamedWindow("Example2",CV_WINDOW_AUTOSIZE);//申请可以自动调节大小的窗口Example1 CvCapture *capture=cvCreateFileCapture("F 阅读全文

posted @ 2014-01-18 16:14 huhuuu 阅读(4706) 评论(0) 推荐(0) 编辑

摘要:opencv是个开源的图像处理的库,小到基本的图像处理函数,如图像移动放大缩小,大到人脸识别,部分机器学习的知识,所以是个学习的不错的库。之前有图像处理的知识,这次再学习下这个开源库。 先上基础的图像读取与显示:#include "stdafx.h"#include "cv.h"#include "highgui.h"int main(){ IplImage *img= cvLoadImage("C:/13.jpg");//读取图片 cvNamedWindow("Example1",CV_WIN 阅读全文

posted @ 2014-01-18 15:18 huhuuu 阅读(490) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示