OpenCV學習筆記_縮放圖片
阿新 • • 發佈:2019-02-07
#include <cv.h> #include <highgui.h> using namespace std; IplImage* doPyrDown(IplImage* in, int filter = IPL_GAUSSIAN_5x5) { //因為是執行縮放後的圖片的原圖的一半,所以原圖片的寬高最好都是2的倍數 assert(in->width % 2 == 0 && in->height % 2 == 0); //執行縮放前,應先為縮放後的圖片建立空間,cvPyrDown函式不負責建立空間。如果原圖的寬高為2的倍數,則如下所示,否則在對應的地方+1。例如,當寬度不能被2整除時,在申請空間時,在寬度那填寫in->width / 2 + 1.注意,只能偏差只能是1. IplImage* out = cvCreateImage(cvSize(in->width / 2, in->height / 2), in->depth, in->nChannels); //在cvPyrDown函式裡有一句斷言std::abs(dsize.width*2 - ssize.width) <= 2 && std::abs(dsize.height*2 - ssize.height) <= 2 cvPyrDown(in, out); return(out); }; int main(int argc, char** argv) { IplImage* img = cvLoadImage("d:\\DSCN0422.jpg"); //如果cvShowImage第一個引數對應的視窗在之前沒有建立,則在執行這個函式的時候自動呼叫cvNamedWindow(第一個引數,CV_WINDOW_AUTOSIZE); cvShowImage("Example1", img); //縮放圖片 IplImage* img2 = doPyrDown(img); cvShowImage("Example2", img2); cvWaitKey(0); cvReleaseImage(&img); cvReleaseImage(&img2); cvDestroyWindow("Example1"); cvDestroyWindow("Example2"); }