Just My Life & My Work

[OpenCV] 縮放影像 (Resize Image)

由於多媒體期末專案需要,我必須先做原始影像大小的判別,若長或寬超過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倍,也就是黃金比例!另外還儲存縮放後的影像,接著就是修改為批次處理囉!很簡單吧~

參考:圖像縮放 – OpenCV China

Comments on: "[OpenCV] 縮放影像 (Resize Image)" (1)

  1. […] 這裡我使用OpenCV的函式來縮放影像,核心函式為cvResize(),詳情可參考我寫的縮放影像。 […]

隨意留個言吧:)~

在下方填入你的資料或按右方圖示以社群網站登入:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google photo

您的留言將使用 Google 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.

標籤雲

%d 位部落客按了讚: