我一直在做一些关于 opencv 和图像处理的工作。每隔一段时间我就会遇到这样的情况,当我尝试像这里一样手动进行一些像素修改时:
cv::Mat newImg = cv::Mat::zeros(img.size(), img.type());
for( int y = 0; y < img.rows; y++ )
{
for( int x = 0; x < img.cols; x++ )
{
cv::Vec3b intensity = img.at<cv::Vec3b>(y, x);
r = intensity.val[0];
g = intensity.val[1];
b = intensity.val[2];
intensity.val[0] = r - (r * modify - r);
intensity.val[1] = g - (g * modify - g);
intensity.val[2] = b - (b * modify - b);
newImg.at<cv::Vec3b>(y, x) = intensity;
}
}
这会产生一个新图像,它有一个像这样的黑框
现在我只是不明白为什么 for 循环不能覆盖整张照片,我之前设法解决了这个问题,但纯属运气,但仍然不明白这个问题的原因和来源。
所以简而言之,我的问题是:如何从我的图像中删除这个黑框?
谢谢