• OpenCV学习笔记——多种Smooth平滑处理


    opencv库提供了好几种模糊平滑Smooth操作的类型作为cvSmooth的参数传入,从而达到不同的平滑效果,另外复习了一下如何复制一份图像和重新调整图像大小。

    调整图像大小目前是按照一下步骤进行:

    1、先cvcreate一个新的图像,cvcreate中的参数设为调整之后的大小(用Cvsize的构造函数封装代入)

    2、然后再用cvresize把原图像输入到刚才构造的已设定好尺寸的图像中

    代码:

    #include<cv.h>
    #include<highgui.h>
    //多种smooth的样例
    int main(void)
    {
    	IplImage *ori_src = cvLoadImage("cc.jpg");
    	IplImage *src = cvCreateImage(CvSize(ori_src->width>>1,ori_src->height>>1), ori_src->depth, ori_src->nChannels);
    
    	cvResize(ori_src, src, CV_INTER_LINEAR);
    
    	IplImage *dst_blur = cvCreateImage(cvGetSize(src), src->depth, src->nChannels);
    	IplImage *dst_blur_no_scale= cvCreateImage(cvGetSize(src), src->depth, src->nChannels);
    	IplImage *dst_gaussian = cvCreateImage(cvGetSize(src), src->depth, src->nChannels);
    	IplImage *dst_medeian= cvCreateImage(cvGetSize(src), src->depth, src->nChannels);
    	IplImage *dst_bilateral = cvCreateImage(cvGetSize(src), src->depth, src->nChannels);
    	
    	cvNamedWindow("Orignal",CV_WINDOW_AUTOSIZE);
    	cvNamedWindow("Cvsmooth_blur");
    	cvNamedWindow("Cvsmooth_blur_no_scale");
    	cvNamedWindow("Cvsmooth_gaussian");
    	cvNamedWindow("Cvsmooth_medeian");
    	cvNamedWindow("Cvsmooth_bilateral");
    
    	cvSmooth(src, dst_blur, CV_BLUR, 3, 3, 0, 0);
    	cvSmooth(src, dst_blur_no_scale, CV_BLUR_NO_SCALE, 3, 3, 0, 0);
    	cvSmooth(src, dst_gaussian, CV_GAUSSIAN, 3, 3, 0, 0);
    	cvSmooth(src, dst_medeian, CV_MEDIAN, 3, 3, 0, 0);
    	cvSmooth(src, dst_bilateral, CV_BILATERAL, 3, 3, 0, 0);
    		
    	cvShowImage("Orignal", src);
    	cvShowImage("Cvsmooth_blur", dst_blur);
    	cvShowImage("Cvsmooth_bur_no_scale", dst_blur_no_scale);
    	cvShowImage("Cvsmooth_gaussian", dst_gaussian);
    	cvShowImage("Cvsmooth_medeian", dst_medeian);
    	cvShowImage("Cvsmooth_bilateral", dst_bilateral);
    
    	cvWaitKey(0);
    
    	cvDestroyAllWindows();
    	cvReleaseImage(&ori_src);
    	cvReleaseImage(&src);
    	cvReleaseImage(&dst_blur);
    	cvReleaseImage(&dst_blur_no_scale);
    	cvReleaseImage(&dst_gaussian);
    	cvReleaseImage(&dst_medeian);
    	cvReleaseImage(&dst_bilateral);
    	return 0;
    }
  • 相关阅读:
    Linux文件目录结构详解
    Linux常用命令学习
    51Nod 1094 和为k的连续区间 | 水
    (转) jsp学习笔记
    Hadoop到底能做什么?怎么用hadoop?
    51Nod 1092 回文字符串 | 最长公共子序列变形
    51Nod 1067 Bash游戏 V2 | 博弈论 Bash
    51Nod 1062 序列中最大的数 | 简单DP
    51Nod 1050 循环数组最大子段和 | DP
    HDU 5643 King's Game | 约瑟夫环变形
  • 原文地址:https://www.cnblogs.com/Blackops/p/5857010.html
Copyright © 2020-2023  润新知