由於多媒體期末專案需要,我必須先做原始影像大小的判別,若長或寬超過1000像素的話,就將影像等比例縮小到1000像素以下,這麼做比用影像處理軟體縮放影像還要方便呢!畢竟要處理500張相片可不是鬧著玩的:P
/**
Theme: Resize Image
Compiler: Dev C++ 4.9.9.2
Date: 100/05/25
Author: ShengWen
Blog: https://cg2010studio.wordpress.com/
*/
#include <cv.h>
#include <highgui.h>
#include <math.h>
int main(){
IplImage *src = 0; //來源影像指標
IplImage *dst = 0; //目標影像指標
float scale = 0.618; //縮放倍數為0.618倍
CvSize dst_cvsize; //目標影像尺寸
src = cvLoadImage("0.jpg"); //載入影像「0.jpg」
dst_cvsize.width = src->width * scale; //目標影像的寬為源影像寬的scale倍
dst_cvsize.height = src->height * scale; //目標影像的高為源影像高的scale倍
dst = cvCreateImage( dst_cvsize, src->depth, src->nChannels); //創立目標影像
cvResize(src, dst, CV_INTER_LINEAR); //縮放來源影像到目標影像
cvSaveImage("0o.jpg", dst);//儲存影像
cvNamedWindow("src", CV_WINDOW_AUTOSIZE ); //建立用於顯示來源影像的視窗
cvNamedWindow("dst", CV_WINDOW_AUTOSIZE ); //建立用於顯示目標影像的視窗
cvShowImage("src", src); //顯示來源影像
cvShowImage("dst", dst); //顯示目標影像
cvWaitKey(0); //等待回應
cvReleaseImage(&src); //釋放來源影像佔用的記憶體
cvReleaseImage(&dst); //釋放目標影像佔用的記憶體
cvDestroyWindow( "src" ); //銷毀視窗「src」
cvDestroyWindow( "dst" ); //銷毀視窗「dst」
//void cvDestroyAllWindows(void);
return EXIT_SUCCESS;
}
直接將影像縮放0.618倍,也就是黃金比例!另外還儲存縮放後的影像,接著就是修改為批次處理囉!很簡單吧~
Comments on: "[OpenCV] 縮放影像 (Resize Image)" (1)
[…] 這裡我使用OpenCV的函式來縮放影像,核心函式為cvResize(),詳情可參考我寫的縮放影像。 […]
讚讚