To manipulate pixels of an OpenCV Image (Mat) , use the C++ code below:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
#include
#include
#include
#include
using namespace cv;
int main( int argc, char** argv )
{
char* imageName = argv[1];
Mat image;
image = imread( imageName, 1 );
if( argc != 2 || !image.data )
{
printf( " No image data \n " );
return -1;
}
// Pixel access
uchar pixValue;
for (int i = 0; i image.cols; i++) {
for (int j = 0; j image.rows; j++) {
Vec3b &intensity = image.atVec3b>(j, i);
for(int k = 0; k image.channels(); k++) {
// calculate pixValue
image.atVec3b>(j, i)[0] = 2*image.atVec3b>(j, i)[0];
image.atVec3b>(j, i)[1] = 2*image.atVec3b>(j, i)[1];
image.atVec3b>(j, i)[2] = 2*image.atVec3b>(j, i)[2];
}
}
}
namedWindow( "talkera.org/opencv", CV_WINDOW_AUTOSIZE );
imshow( "talkera.org/opencv", image );
waitKey(0);
return 0;
}
|
Output:
Accessing pixels in Python is more easy:
1
2
3
4
5
|
import numpy as np
import cv2
img = cv2.imread('face2.jpg')
print img[3,3]
|