将一幅图像缩小为原来的二分之一
在openCV中,通过cvPyrDown()完成这个功能
/*
将图像缩小到原来的一半
*/
#include "highgui.h"
#include "cv.h"
//#include<assert.h>
void doPyrDown(IplImage* img, int fliter=IPL_GAUSSIAN_5x5)
{
// 断言
//assert(img->width%2==0 && img->height%2==0);
// 命名窗口
cvNamedWindow("Half");
// 创建新的图形,大小为原来长和宽的一半
IplImage* half = cvCreateImage(cvSize(img->width/2, img->height/2),
img->depth,
img->nChannels);
//将原图像缩小为原来的一半
cvPyrDown(img,half);
cvShowImage("Half",half);
cvReleaseImage(&half);
cvWaitKey(0);
cvDestroyWindow("Half");
}
结果与原图像相比,为:
提取图像的边缘
使用cvCanny()提取图像的边缘
/*
边缘提取
*/
#include "highgui.h"
#include "cv.h"
void doCanny(
IplImage* img,
double lowThresh,
double highThresh,
double aperture
)
{
// 命名窗口
cvNamedWindow("Edge");
// Canny只能处理单通道图像
IplImage* edge = cvCreateImage(
cvSize(img->width, img->height),
IPL_DEPTH_8U,
1);
cvCanny(img,edge,lowThresh,highThresh,aperture);
cvShowImage("Edge",edge);
cvReleaseImage(&edge);
cvWaitKey(0);
cvDestroyWindow("Edge");
}
结果:
这些变换所用到的函数和使用将在后面的内容中详细说明
资料来源:《学习OpenCV》