opencv学习笔记5

对一副图像进行不同scale的高斯模糊和Canny边缘提取


#include<iostream>
#include<sstream>
#include "cv.h"
#include "cxcore.h"
#include "highgui.h"
using namespace std;

#define SCALESIZE 20
void main()
{
	IplImage* src = cvLoadImage("1.png",0);
	int winSize[SCALESIZE],i;
	IplImage* scaleImage[SCALESIZE];
	IplImage* edgeImage[SCALESIZE];
	char filename[256];
	char filename2[256];
	char windowName[256];
	char windowName1[256];
	winSize[0] = 3;
	scaleImage[0] = cvCreateImage(cvGetSize(src),8,1);
	edgeImage[0] = cvCreateImage(cvGetSize(src),8,1);
	for(i = 1;i < SCALESIZE;i++)
	{
		winSize[i] = winSize[i-1]+2;//要为奇数
		scaleImage[i] = cvCreateImage(cvGetSize(src),8,1);
		edgeImage[i] = cvCreateImage(cvGetSize(src),8,1);
	}
	for(i = 0;i < SCALESIZE;i++)
	{
		cvSmooth(src,scaleImage[i],CV_GAUSSIAN,winSize[i],winSize[i]);
		//作winSize[i]*winSize[i]的高斯卷积,
		//一般为卷积核的水平方向直径(选择CV_GAUSSIAN平滑时必须为奇数,否则会触发assert错误)

		cvCanny(scaleImage[i],edgeImage[i],30,90,3);
		//在做完高斯卷积的图片上提取Canny边缘信息
	}
	//显示图片
	for( i = 0;i<SCALESIZE;i++)
	{
		stringstream name;
		string s1 = "scale";
		string s2 = "edge";
		
		name<<s1<<i;
		name>>windowName;
		cvNamedWindow(windowName);
		cvShowImage(windowName,scaleImage[i]);
		name.clear();
		cvWaitKey(1000);

		name<<s2<<i;
		name>>windowName1;
		cvNamedWindow(windowName1);
		cvShowImage(windowName1,edgeImage[i]);
		name.clear();

		cvWaitKey(1000);
	}

	for( i = 0;i < SCALESIZE;i++)
	{
		string s1 = "scale_";
		string jpg = ".jpg";
		stringstream ss;
		ss<<s1<<i<<jpg;
		ss>>filename;
		cvSaveImage(filename,scaleImage[i]);
		ss.clear();
		string s2 = "edge_";
		ss<<s2<<i<<jpg;
		ss>>filename2;
		cvSaveImage(filename2,edgeImage[i]);
		ss.clear();
	}
	for(i = 0;i <SCALESIZE;i++)
	{
		cvReleaseImage(&scaleImage[i]);
		cvReleaseImage(&edgeImage[i]);
		cvDestroyWindow(windowName);
		cvDestroyWindow(windowName1);
	}
	cvReleaseImage(&src);
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值