Opencv2與Opencv1訪問像素文法轉換

來源:互聯網
上載者:User

本人比較習慣於Opencv1的代碼寫法,看了最新一本關於Opencv2寫法,雖然原理是一樣的但是寫法差別是很大的,所以我看了Opencv2訪問像素寫法後就嘗試改變為Opencv1代碼寫法。

下面代碼是網上的:修改圖片的對比與亮度代碼如下所示,是使用Opencv2代碼寫法

Mat image = imread("./6.jpg");    Mat new_image = Mat::zeros( image.size(), image.type() );    /// 初始化    cout << " Basic Linear Transforms " << endl;    cout << "-------------------------" << endl;    cout << "* Enter the alpha value [1.0-3.0]: ";    cin >> alpha;    cout << "* Enter the beta value [0-100]: ";    cin >> beta;    /// 執行運算 new_image(i,j) = alpha*image(i,j) + beta    for( int y = 0; y < image.rows; y++ )    {        for( int x = 0; x < image.cols; x++ )        {            for( int c = 0; c < 3; c++ )            {                new_image.at<Vec3b>(y,x)[c] = saturate_cast<uchar>( alpha*( image.at<Vec3b>(y,x)[c] ) + beta );            }        }    }    /// 建立視窗    namedWindow("Original Image", 1);    namedWindow("New Image", 1);    /// 顯示映像    imshow("Original Image", image);    imshow("New Image", new_image);    /// 等待使用者按鍵    waitKey();

下面是我根據原理用Opencv1代碼寫法:

IplImage *src, *dst;src = cvLoadImage("./6.jpg");dst = cvCreateImage(cvGetSize(src), src->depth, src->nChannels);cvZero(dst);/// 初始化    cout << " Basic Linear Transforms " << endl;    cout << "-------------------------" << endl;    cout << "* Enter the alpha value [1.0-3.0]: ";    cin >> alpha;    cout << "* Enter the beta value [0-100]: ";    cin >> beta;for( int x = 0; x < src->width ; x++ )    {for( int y = 0; y < src->height; y++ )        {            for( int c = 0; c < 3; c++ )            {                //new_image.at<Vec3b>(y,x)[c] = saturate_cast<uchar>( alpha*( image.at<Vec3b>(y,x)[c] ) + beta );((uchar *)(dst->imageData + dst->widthStep * y))[x * 3 + c] = saturate_cast<uchar>(alpha*((uchar *)(src->imageData + src->widthStep * y))[x * 3 + c]+beta);            }        }    }cvNamedWindow("src");cvNamedWindow("dst");cvShowImage("src", src);cvShowImage("dst", dst);cvWaitKey();//銷毀視窗與釋放記憶體cvDestroyAllWindows();cvReleaseImage(&src);cvReleaseImage(&dst);return 0;

原圖與處理好圖如下所示:

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.