在访问Pixel Data时,我正在浏览OpenCV页面中的一些代码
IplImage* img=cvCreateImage(cvSize(640,480),IPL_DEPTH_32F,3);
CvScalar s;
s=cvGet2D(img,i,j); // get the (i,j) pixel value
printf("B=%f, G=%f, R=%f\n",s.val[0],s.val[1],s.val[2]);
s.val[0]=111;
s.val[1]=111;
s.val[2]=111;
cvSet2D(img,i,j,s); // set the (i,j) pixel value
Run Code Online (Sandbox Code Playgroud)
我做了类似的事情,但我使用提供的模板类来访问像素数据......反正我不确定我理解部分s.val [0] = 111 ....等?如果s.val [0]包含B值,那么s.val [0] = 111到底在做什么?是不是把它设置为黑色?........我不明白它到底应该是什么?
我习惯了CVscalars等,但我不明白这种格式?具体是什么意思?
谢谢
cvSet2D(img,i,j,s)用于不访问第(i,j)个像素.它访问第(j,i)个像素.这是因为图像存储为矩阵 - 您需要先指定行(Y坐标),然后指定列(X坐标).
您是否尝试使用指针访问图像中的数据,而不是使用cvGet/Set函数?