OpenCV入门系列(5):对图片进行基本的变换
2012-08-06 14:56 TW-Freewind 阅读(1880) 评论(0) 收藏 举报本文演示如何对一张图片进行三个基本变换:1. 模糊,2.缩放,3. 寻边。
由于都是对OpenCV内置的函数调用,所以代码都比较简单,主要目的是对图形变换有一个基本和直观的了解。
原理:读取图片->调用OpenCV函数处理->输出到窗口。
原图
首先看源图,所有的操作都基于它:
模糊
先看效果:
核心函数:cvSmooth
完整代码:
#include "cv.h" #include "highgui.h" int main(int argc, char** argv) { char* imagePath = "d:\\flower.jpg"; IplImage* image = cvLoadImage(imagePath); cvNamedWindow("window-in"); cvShowImage("window-in", image); cvNamedWindow("window-out"); IplImage* out = cvCreateImage( cvGetSize(image), IPL_DEPTH_8U, 3); cvSmooth(image, out, CV_GAUSSIAN, 15, 15); cvShowImage("window-out", out); cvWaitKey(0); cvReleaseImage(&out); cvReleaseImage(&image); cvDestroyWindow("window-in"); cvDestroyWindow("window-out"); }
注意在cvSmooth那一行,采用的是高斯模糊,后面的数越大越模糊。
缩放
先看效果图:
核心函数:cvPyrDown
完整代码:
#include "cv.h" #include "highgui.h" int main(int argc, char** argv) { char* imagePath = "d:\\flower.jpg"; IplImage* image = cvLoadImage(imagePath); cvNamedWindow("window-in"); cvShowImage("window-in", image); cvNamedWindow("window-out"); IplImage* out = cvCreateImage(cvSize(image->width/2, image->height/2), image->depth, image->nChannels); cvPyrDown(image, out); cvShowImage("window-out", out); cvWaitKey(0); cvReleaseImage(&out); cvReleaseImage(&image); cvDestroyWindow("window-in"); cvDestroyWindow("window-out"); }
注意在创建新图时,就指定了最终的尺寸。
寻边
先看效果图:
核心代码:doCanny
完整代码:
#include "cv.h" #include "highgui.h" int main(int argc, char** argv) { char* imagePath = "d:\\flower.jpg"; IplImage* image = cvLoadImage(imagePath); cvNamedWindow("window-in"); cvShowImage("window-in", image); cvNamedWindow("window-out"); IplImage* out = cvCreateImage(cvGetSize(image), image->depth, 1); cvCanny(image, out, 10, 100, 3); cvShowImage("window-out", out); cvWaitKey(0); cvReleaseImage(&out); cvReleaseImage(&image); cvDestroyWindow("window-in"); cvDestroyWindow("window-out"); }
注意创建新图时,最后一个参数channel为1。




浙公网安备 33010602011771号