OpenCV,将一块像素从图像映射到图像时的噪声

发布于 2025-01-05 07:23:12 字数 770 浏览 1 评论 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++); 
            }
        }
}

I am copying a patch of pixels from one image to another and as a result I am not getting a 1:1 mapping but the new image intensities differ by 1 or 2 itensity-levels from the source image.

Do you know what could be causing this?

This is the code:

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++); 
            }
        }
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

提笔落墨 2025-01-12 07:23:12

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

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

http://nashruddin.com/OpenCV_Region_of_Interest_(ROI)

Is it a single channel image or multiple-channel image (such as RGB)? If it is a multiple-channel image, you have to consider the channel index in your loop.

btw: OpenCV supports region of interest (ROI) which will be convenient for you to implement copying a sub-region of an image. Below is the link you can find information on ROI usage in OpenCV.

http://nashruddin.com/OpenCV_Region_of_Interest_(ROI)
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文