雕刻时光

just do it……nothing impossible
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
上一页 1 ··· 10 11 12 13 14 15 16 17 18 ··· 50 下一页

2014年2月6日

摘要: 有时候,我们需要提取一个图像的边缘利于计算。 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 阅读(20358) 评论(6) 推荐(0) 编辑

2014年1月27日

摘要: 图像处理里面缩放操作是比较常见的: 最近邻插值:类似简单映射的处理方式,目标图像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 阅读(3120) 评论(0) 推荐(0) 编辑

2014年1月24日

摘要: 在图像处理里,如果我们需要填充一个区域,使该区域为相同的颜色,则比较常用的是洪水填充法。洪水填充法可以用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 阅读(7363) 评论(0) 推荐(0) 编辑

2014年1月21日

摘要: 为了处理更为复杂的情况,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 阅读(5614) 评论(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 阅读(28430) 评论(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 阅读(19480) 评论(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 阅读(1039) 评论(0) 推荐(0) 编辑

2014年1月20日

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

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

2014年1月18日

摘要: 对实时的视屏流进行处理,实质还是对单幅图片进行处理! #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 阅读(765) 评论(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 阅读(4700) 评论(0) 推荐(0) 编辑

上一页 1 ··· 10 11 12 13 14 15 16 17 18 ··· 50 下一页