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 像素關係重採樣法(可避免波紋)