opencv2学习-

/*
        像素访问
*/ 
 
#include <iostream>  
#include <cv.h>    
#include <opencv2/core/core.hpp>  
#include <opencv2/highgui/highgui.hpp>
 
using namespace std;
using namespace cv;  
 
int main(int argc, int* argv[])  
{  
    Mat image = imread("lena.bmp");
    Mat out1 = image.clone();

    long n_rows = out1.rows;
    long n_cols = out1.cols * out1.channels();

    /*
     *            行指针
     */
    uchar *p;
    for(long i=0; i<n_rows; i++)
    {
        p = out1.ptr<uchar>(i);
        for(long j=0; j<n_cols; j++)
        {
            p[j] = 255 - p[j];
        }
    }

    /*
     *            元素指针
     */
    Mat out2;
    out2.create(image.size(), image.type());  // reserve size and type but alloc new space

    n_rows = out2.rows;
    n_cols = out2.cols * out2.channels();

    p = out2.data;
    double c = 0.5;
    double b = 30;
    for (long i=0; i<n_rows*n_cols; i++)
    {
       *(p+i) = (uchar)(255 * 0.5 * ((double)(image.data[i]) / 255) + b);
    }     

   /*
     * Display
     */
    imshow("src_image", image);
    imshow("reverse_image", out1);
    imshow("mici_image", out2);
 
    waitKey(6000);  
    return 0;     
}  
原文地址:https://www.cnblogs.com/love29850706/p/5536584.html