opencv 图像阴影检测
来源:互联网 发布:淘宝拍照用什么软件 编辑:程序博客网 时间:2024/05/01 03:05
参数说明:
IplImage *workImg-当前全局变量,表示正在显示的图片。
downleft, upright- 检测出的阴影部分矩形框的两个对角顶点。
/*********************************************/ //阴影检测/*********************************************/CvPoint downleft,upright;int cnt;int dir[8][2]={-1,-1,-1,0,-1,1,0,1,0,-1,1,1,1,0,1,-1};#define SHADOW 170#define Thres_KindNumber 20bool InRange(CvPoint point,IplImage* pi) {int w=pi->width;int h=pi->height;if(point.x>=0&&point.x<w&&point.y>=0&&point.y<h){float v[3];for(i=0;i<3;i++){v[i]=((uchar*)(pi->imageData + pi->widthStep*point.y))[point.x*3+i];if(v[i]<=SHADOW)return true;}}return false;}void Dye(IplImage** curimg,CvPoint s){int i;queue<CvPoint>Q;Q.push(s);for(i=0;i<3;i++)((uchar*)((*curimg)->imageData + (*curimg)->widthStep*s.y))[s.x*3+i]=SHADOW+10;while(!Q.empty()){s=Q.front();Q.pop();if(s.x<downleft.x)downleft.x=s.x;if(s.y<downleft.y)downleft.y=s.y;if(s.x>upright.x)upright.x=s.x;if(s.y>upright.y)upright.y=s.y;//dye aroundfor(i=0;i<8;i++){CvPoint now=cvPoint(s.x+dir[i][0],s.y+dir[i][1]);if(InRange(now,*curimg)){Q.push(now);cnt++;for(i=0;i<3;i++)((uchar*)((*curimg)->imageData + (*curimg)->widthStep*now.y))[now.x*3+i]=SHADOW+10;}}}}void CCVMFCView::OnShadowDetect(){//detect shadows,find the region with highest pixel valueint x,y;srcimg=workImg;for(y=0;y<srcimg->height;y++)for(x=0;x<srcimg->width;x++){CvPoint curp=cvPoint(x,y);downleft.x=srcimg->width;downleft.y=srcimg->height;upright.x=upright.y=0;cnt=0;if(InRange(curp,srcimg))Dye(&srcimg,curp);if(cnt>Thres_KindNumber)cvRectangle(workImg , downleft,upright,CV_RGB(0,255,0),1,CV_AA,0);}Invalidate();}
- opencv 图像阴影检测
- opencv 图像阴影检测
- opencv 图像阴影检测
- OpenCV检测图像轮廓
- 【OpenCV】图像模糊检测
- opencv图像边缘检测
- OpenCv视频图像肤色检测
- Opencv图像偏色检测
- OpenCV检测图像SURF特征
- opencv图像角点检测
- opencv(16)---图像边缘检测
- openCV实现图像边缘检测
- Opencv 图像增强算法 图像检测结果
- Opencv 图像增强算法 图像检测结果
- Opencv 图像增强算法 图像检测结果
- opencv图像处理5--车辆检测
- opencv图像处理6--网球检测
- 图像边缘检测--OpenCV之cvCanny函数
- c# 软件皮肤自定义
- 各种字符串Hash函数比较
- 杭电 1004[Let the Balloon Rise]
- 无线网络破解________破解wap密码..............
- 集线器,路由器,交换机的作用和区别是什么以及如何区分?
- opencv 图像阴影检测
- spserver学习之三__通讯模型
- 俄罗斯方块
- linux grep用法
- C语言数据结构中链表的具体实现
- 2012年3月8日C++学习笔记
- 千呼万唤 HTML 5 (1) - 根元素, 元数据元素, 脚本元素
- C++中虚继承防止二义性
- 千呼万唤 HTML 5 (2) - 区块元素