学习OpenCV——DrawRect

原创 2012年03月23日 12:41:16

分别从x,y,h,w分别向中靠近,直到包含区域的像素平均值小于上一次的平均值。分别获取(x,y)(w,h)画框

对二值图像效果比较好

#include "cv.h"
#include "highgui.h"

int main()
{
    IplImage* src=NULL;
    IplImage* dst= NULL;
    src= cvLoadImage("D:/1.jpg",-1);//<0 代表相应颜色或深度
    
	
	int x=0,y=0,w=src->width,h=src->height;
	const int w0=src->width;
	const int h0=src->height;
	//cvRectangle(src,cvPoint(x,y),cvPoint(x+w,y+h),CV_RGB(0,0,255),2);
	//cvNamedWindow("src0",1);
    //cvShowImage("src0",src);

	double t0=cvAvg(src).val[0];
	double t1=t0;

	for(int i=1;i<w0;i++)
	{
		++x;
		cvSetImageROI(src,cvRect(x,0,w0,h0));
		
		double t2=0;
		t2=cvAvg(src).val[0];
		if(t2>t1)
			t1=t2;
		else
			break;
		cvResetImageROI(src);
	}
	cvResetImageROI(src);
	t1=t0;
	for(int i=1;i<w0;i++)
	{
		--w;
		cvSetImageROI(src,cvRect(0,0,w,h0));
		
		double t2=cvAvg(src).val[0];
		if(t2>t1)
			t1=t2;
		else
			break;
		cvResetImageROI(src);
	}
	cvResetImageROI(src);

	t1=t0;
	for(int i=1;i<h0;i++)
	{
		++y;
		cvSetImageROI(src,cvRect(0,y,w0,h0));
		
		double t2=0;
		t2=cvAvg(src).val[0];
		if(t2>t1)
			t1=t2;
		else
			break;
		cvResetImageROI(src);
	}
	cvResetImageROI(src);
	t1=t0;
	for(int i=1;i<h0;i++)
	{
		--h;
		cvSetImageROI(src,cvRect(0,0,w0,h));
		
		double t2=cvAvg(src).val[0];
		if(t2>=t1)
			t1=t2;
		else
			break;
		cvResetImageROI(src);
	}
	cvResetImageROI(src);
	
	

	cvResetImageROI(src);
	cvRectangle(src,cvPoint(x,y),cvPoint(w,h),CV_RGB(0,0,255),2);
	cvNamedWindow("src",1);
    cvShowImage("src",src);
	cvSaveImage("D:/out_2尺度FT+2尺度SR(MS&64、32)加权归一化AddWeighted(0.9,0.7)/0_1_1664_RC_Draw.png",src);
	cvWaitKey(0);
}
 


 

 

 

相关文章推荐

opencv之简单几何图形实现

一、基本函数介绍: (1)点: Point a = Point (1000,1000); (2)文字函数putText(): void putText( CvArr* img, const char...

OpenCV学习笔记(四)

创建滑动条:createTrackbar()函数——用于创建一个可以调整数值的滑动条,并将滑动条附加到指定的窗口上,函数原型如下:int createTrackbar(const String& tr...

【学习ios之路:UI系列】绘图(drawRect)

实现代码如下: ①在自定义视图中定义3个属性//记录线条的路径 @property (nonatomic, retain) NSMutableArray *paths; //设置绘图过程中线条的颜色...
  • ZFX5130
  • ZFX5130
  • 2015年02月05日 21:42
  • 769

OpenCV2.4.3学习笔记——core

  • 2013年08月13日 15:12
  • 97KB
  • 下载

学习OpenCV——BOW特征提取函数(特征点篇)

没日没夜的改论文生活终于要告一段落了,比起改论文,学OpenCV就是一件幸福的事情。OpenCV的发展越来越完善了,已经可以直接使用BOW函数来进行对象分类了。 简单的通过特征点分类的方法:...

OpenCV中feature2D学习——SURF和SIFT算子实现特征点检测

在opencv的features2d中实现了SIFT和SURF算法,可以用于图像特征点的自动检测。具体实现是采用SurfFeatureDetector/SiftFeatureDetector类的det...

OpenCV学习笔记——2维特征Feature2D,SURF

基于特征点的图像匹配是图像处理中经常会遇到的问题,手动选取特征点太麻烦了。比较经典常用的特征点自动提取的办法有Harris特征、SIFT特征、SURF特征。 先介绍利用SURF特征的特征描述办法...

zynq-7000学习笔记(十五)——在QT上调用opencv加载图片并显示

PC平台:WINDOWS 10 64位 + 虚拟机Ubuntu 14.04 Xilinx设计开发套件:Xilinx_vivado_sdk_2015.4 开发板:Zed Board USB摄像头:...

学习opencv——手写数字识别(2)

前一次用OpenCV自带的图片做训练和测试,成功率可以达到91%。那么怎么提高识别的成功率,在实际的测试中可能会根据自己手写数字的差异大大降低数字的识别率。通过增加自己手写数字的样本集来增加识别率。1...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:学习OpenCV——DrawRect
举报原因:
原因补充:

(最多只允许输入30个字)