簡體   English   中英

復制圖像將黑色像素更改為白色像素

[英]Copy image changing black pixels into white pixels

我正在閱讀圖片( img1=cv2.imread('picture.jpg') ),其中只有一個對象,背景為黑色。

請注意,該對象沒有黑色像素。

我想像這樣將img1復制到img2img2=img1.copy()但我想在img2中將img1所有黑色像素(背景)設置為白色。 我怎樣才能達到這個目標?

這應該工作:( 在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創建蒙版。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM