基于opencv图像的基本操作

#include"cv.h"
#include "highgui.h"
void example2_4(IplImage* image);
IplImage* doPyrDown(IplImage* image_input);
IplImage* doCanny(IplImage* image_input, double lowThresh, double highThresh, double aperture);
void main()
{
IplImage* image = cvLoadImage("2.jpg");  //创建一个指针指向读取的Lena.jpg这个图片文件
IplImage* img_gry = cvCreateImage(cvSize(image->width, image->height), image->depth, 1);
//example2_4(image);
cvShowImage("原图像", image);
//将BGR图转成灰度图  
cvCvtColor(image, img_gry, CV_BGR2GRAY);
cvShowImage("灰度图", img_gry);
IplImage* out=doPyrDown(image);
cvShowImage("缩放图", out);
IplImage* smooth = cvCreateImage(cvGetSize(image), image->depth, 1);
cvShowImage("平滑图", smooth);
//在进行图片边缘检测前,应先对图片进行模糊处理 
cvSmooth(img_gry, smooth, CV_GAUSSIAN, 3, 3);
IplImage* image_out = doCanny(smooth,10,100,5);
cvShowImage("边缘图", image_out);
cvWaitKey(0);
cvReleaseImage(&image);
cvReleaseImage(&img_gry);
cvReleaseImage(&out);
cvReleaseImage(&smooth);
cvReleaseImage(&image_out);
cvDestroyWindow("原图像");
cvDestroyWindow("灰度图");
cvDestroyWindow("缩放图");
cvDestroyWindow("平滑图");
cvDestroyWindow("边缘图");
}
void example2_4(IplImage* image)//高斯平滑
{
//cvNamedWindow("Example4_in");
//cvNamedWindow("Example4_out");
cvShowImage("Example4_in", image);
IplImage* out = cvCreateImage(
cvGetSize(image),
IPL_DEPTH_8U,
3
);
cvSmooth(image, out, CV_GAUSSIAN, 3, 3);
cvShowImage("Example4-out",out);
cvReleaseImage(&out);
cvWaitKey(0);
cvDestroyWindow("Example4_in");
cvDestroyWindow("Example4_out");
}
IplImage* doPyrDown(IplImage* image_input)//缩放
{
//assert(image_input->width % 2 == 0 && image_input->height % 2 == 0);  //判断尺寸是否能被2整除,不能就终止程序


IplImage* image_output = cvCreateImage(cvSize(image_input->width / 2, image_input->height / 2),
image_input->depth,
image_input->nChannels);


cvPyrDown(image_input, image_output);
return(image_output);
}
IplImage* doCanny(IplImage* image_input,
double lowThresh,
double highThresh,
double aperture)
{
if (image_input->nChannels != 1)
return (0);


IplImage* image_output = cvCreateImage(cvGetSize(image_input),
image_input->depth,
image_input->nChannels);


cvCanny(image_input, image_output, lowThresh, highThresh, aperture);


return(image_output);

}

运行结果:

  

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值