06 圖片大小修改

    screen-shot-2016-11-14-at-2-07-20-pm

    #include <iostream>
    #include <opencv2/core/core.hpp> 
    #include <opencv2/highgui/highgui.hpp>
    #include <opencv/highgui.h>
    #include <opencv/cv.h>
    
    
    using namespace cv ;
    using namespace std ;
    
    
    cv::Mat matControl_3( cv::Mat srcMat )
    {
        //複製和改變每一個pixel的顏色
        cv::Mat dstMat( srcMat.rows, srcMat.cols, srcMat.type() );
        int nChannels = srcMat.channels();
        int nRows = srcMat.rows;
        int nCols = srcMat.cols * nChannels;
        int nStep = srcMat.step;
        
        uchar* srcData= srcMat.data;
        uchar* dstData = dstMat.data;
        for( int j = 0; j < nRows; j++ ){
            for( int i = 0; i < nCols; i++ ) {
                if(i%3==2){ //0藍 1綠 2紅
                    int t1=*(srcData+i);
                    t1=t1*3;
                    if(t1>255) t1=255;
                    *(dstData+i) =t1 ;
                }else{
                    *(dstData+i) = *(srcData+i);
                }
            }
            srcData += nStep;
            dstData += nStep;
        }
        
        return dstMat;
    }
    
    
    int main() {
        cv::Mat image = cv::imread("/Users/powenko/Desktop/1.png");
        if(image.data!=NULL){
            cv::namedWindow("Image") ;
            cv::imshow("Image", image) ;
            
            Mat image2=matControl_3(image);
            
            cv::imshow("mat", image2) ;
            cv::waitKey() ;
        }
        return 0;
    }
    
    



    C++ API

    void resize(InputArray src, OutputArray dst, Size dsize, double fx=0, double fy=0, int interpolation=INTER_LINEAR )

    C API

    void cvResize(const CvArr* src, CvArr* dst, int interpolation=CV_INTER_LINEAR )

    src 來源影像(input image)
    dst 目標影像(output image)
    interpolation修改、插補的方法
    INTER_NEAREST 臨近元素插值法
    INTER_LINEAR 雙線性差值法(默認)
    INTER_CUBIC 立方差值法
    INTER_AREA 像素關係重採樣法(可避免波紋)