通过直接访问+ opencv更改像素值

时间:2011-08-10 11:42:52

标签: visual-c++ opencv

这段代码中是否有任何问题,我只是试图通过直接访问像素来减去图像的像素值.....我假设图像具有相同的高度和宽度...每当我运行程序我得到完全黑色的图片.....

IplImage * img3 = cvCreateImage(cvSize(img1->height,img1->width),IPL_DEPTH_32F,3);
// img2 and img1 both are IplImage pointers
cvZero(img3);
long value;
for ( int row = 0 ; row < img2->height * img2->width ; row ++ ){
    value = &((uchar*)(img1->imageData))[row] - &((uchar*)(img2->imageData))[row] ; 
    img3->imageData[row] = value;

1 个答案:

答案 0 :(得分:0)

1)img2-&gt; height * img2-&gt;宽度在循环前计算为常数

2) 我不明白这一行 &amp;((uchar *)(img1-&gt; imageData))[row] - &amp;((uchar *)(img2-&gt; imageData))[row] - 你从另一个指针中减去指针吗?为什么? value = img1-&gt; imageData [row] - img2-&gt; imageData [row];应该做的伎俩

3)你不能通过减去像素值(如果那是你的目标)来减去RGB值

4)如果img3-&gt; imageData是* char,那么你应该将row * 4相乘。