OpenCV中使用cvResize函數或resize函數進行圖象放縮


//cvResize函數原型
void
cvResize( const CvArr* src, CvArr* dst, int interpolation=CV_INTER_LINEAR );

src:輸入圖像.(IplImage)

dst:輸出圖像.(IplImage)

interpolation:差值方法: 

    CV_INTER_NN - 最近鄰差值

    CV_INTER_LINEAR - 雙線性差值 (缺省使用)

    CV_INTER_AREA - 使用象素關系重采樣。當圖像縮小時候,該方法可以避免波紋出現。當圖像放大時,類似於  CV_INTER_NN  方法

    CV_INTER_CUBIC - 立方差值

函數cvResize 將圖像  src 改變尺寸得到與  dst 同樣大小。若設定ROI,函數將按常規支持 ROI.

 

使用C++編程時使用resize函數進行圖像縮放

//resize函原型
CV_EXPORTS_W void resize( InputArray src, OutputArray dst, Size dsize, double fx=0, double fy=0, int interpolation=INTER_LINEAR );

注:dsize與(fx,fy)不能同時為0

 

示例程序:

使用ubuntu14.04+OpenCV 3.1.0

 

/**------------------------------------------------------------------**/
/**描述:包含程序所依賴的頭文件**/
/**------------------------------------------------------------------**/
#include <opencv2/opencv.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <string>
/**------------------------------------------------------------------**/
/**描述:程序所用的命名空間**/
/**------------------------------------------------------------------**/
using namespace cv;
using namespace std;
/**------------------------------------------------------------------**/
/**描述:系統全局常量**/
/**------------------------------------------------------------------**/
//目標圖片的文件名,需要放置在工程目錄下
const string TagrImg = "Angelababy.jpeg";
//定義窗口標題
const char SrcWinNa[] = "SrcWindow";
const char GryWinNa[] = "GryWindow";
const char ResWinNa[] = "ResWindow";
/**------------------------------------------------------------------**/
/**描述:系統全局變量**/
/**------------------------------------------------------------------**/
//放縮倍數
double scale=0.4;

int main(int argc, char **argv)
{
    /**原圖像的讀取及顯示-----------------------------------------------**/
    //讀取圖片
    Mat SrcImg = imread(TagrImg);
    //檢查是否讀取成功
    if(!SrcImg.data)
    {
        cout<<"讀取失敗,程序流產"<<endl;
        cout<<"請檢查工程目錄下是否存在"<<TagrImg<<endl;
        return -1;
    }
    //創建窗口顯示原圖像
    cvNamedWindow(SrcWinNa, CV_WINDOW_AUTOSIZE);
    imshow(SrcWinNa, SrcImg);
    
    /**圖片縮放及顯示--------------------------------------------------**/
    //設置縮放后的圖片的尺寸
    Size ResImgSiz = Size(SrcImg.cols*scale, SrcImg.rows*scale);
    Mat ResImg = Mat(ResImgSiz, SrcImg.type());
    resize(SrcImg, ResImg, ResImgSiz, CV_INTER_CUBIC);
    //創建窗口用於顯示縮放后的圖像
    cvNamedWindow(ResWinNa, CV_WINDOW_AUTOSIZE);
    imshow(ResWinNa, ResImg);
    cvWaitKey(0);
    return 1;
}

 

將圖片縮小到0.5倍的效果圖:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM