0

我正在将一块像素从一个图像复制到另一个图像,因此我没有得到 1:1 的映射,但新的图像强度与源图像相差 1 或 2 个强度级别。

你知道是什么原因造成的吗?

这是代码:

void templateCut ( IplImage* ptr2Img, IplImage* tempCut, CvBox2D* boundingBox ) 
{ 

/* Upper left corner of target's BB */
int col1 = (int)boundingBox->center.x;
int row1 = (int)boundingBox->center.y;

for(int i=0; i<tempCut->height; i++)
        {       
        /* Pointer to a row */
            uchar * ptrImgBB = (uchar*)( ptr2Img->imageData + (row1+i)*ptr2Img->widthStep + col1 );
            uchar * ptrTemp  = (uchar*)( tempCut->imageData + i*tempCut->widthStep );

            for(int i2=0; i2<tempCut->width; i2++)
            {
                *ptrTemp++ = (*ptrImgBB++); 
            }
        }
}
4

1 回答 1

1

是单通道图像还是多通道图像(如RGB)?如果是多通道图像,则必须考虑循环中的通道索引。

顺便说一句:OpenCV 支持感兴趣区域(ROI),这将方便您实现复制图像的子区域。以下是您可以在 OpenCV 中找到有关 ROI 使用信息的链接。

http://nashruddin.com/OpenCV_Region_of_Interest_(ROI)
于 2012-02-15T12:36:27.433 回答