复制图像将黑色像素更改为白色像素

时间:2015-03-04 13:17:20

标签: python python-2.7 opencv numpy

我正在阅读只有一个物体的照片(img1=cv2.imread('picture.jpg')),背景为黑色。

请注意,该对象没有黑色像素。

我想将img1复制到img2,如下所示:img2=img1.copy()但我想在img2中获得img1的所有黑色像素(背景)设为白色。我怎样才能达到这个目标?

1 个答案:

答案 0 :(得分:0)

这应该有效:(在C ++中,见下面的评论)

const cv::Mat img1=cv::imread('picture.jpg')

///Create a grayscale mask -> only pixel !=0 in the mask will be copied
cv::Mat mask(img1.size(),CV_8U); ///cvtColor requires output image to be already allocated
cv::cvtColor(img1, mask, CV_BGR2GRAY);

///Initialize output image to white
cv::Mat img2(img1.size(),CV_8UC3);
img2.setTo(cv::Scalar(255,255,255) );

///Copy pixels from the original image to the destination image, only where mask pixels != 0
img1.copyTo(img2,mask);

使用copyTocvtColor。 唯一的问题是,如果在输入图像中,您的背景中的像素为零。在这种情况下,您可能更喜欢泛滥填充方法,但可能对您的问题来说太过分了。

编辑:您还可以使用inRange创建蒙版。