03 複製和改變每一個pixel的顏色

    複製和改變每一個pixel的顏色

    #include
    #include
    #include
    #include
    #include

    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;
    }

    screen-shot-2016-11-14-at-12-12-34-am