如何访问OpenCV中的每个像素,执行操作并将新信息返回到图像?

时间:2017-11-17 13:47:01

标签: image opencv pixel

我正在尝试访问图像的每个像素以执行操作并将其返回到图像,有人知道如何执行此操作,因为我已经完成此操作但是在编译时它标记我错了。 / p>

 #include <opencv2/opencv.hpp>
 #include <opencv2/highgui/highgui.hpp> 
 #include <stdio.h>

 using namespace cv;
 using namespace std;
 int main( int argc, char** argv ){

    char* source_window = "Source image";
    Mat nueva;
    Mat img = imread("img.jpg",CV_LOAD_IMAGE_COLOR);
    unsigned char *input = (unsigned char*)(img.data);

    int i,j,b;
    for(int i = 0;i < img.cols;i++){
        for(int j = 0;j < img.rows;j++){
           b = input[i+1][j+1] ;
           nueva[i][j] = b;
         }
     }

     imshow( source_window, nueva );

 }

1 个答案:

答案 0 :(得分:-1)

我认为您可以使用此代码

 int nl= image.rows; 
 int nc= image.cols * image.channels();
 for (int j=0; j<nl; j++) {
    uchar* data= image.ptr<uchar>(j);
    for (int i=0; i<nc; i++) {
       data[i]= data[i]/div*div + div/2;
    }
 }