将背景色更改为b

2024-03-28 19:30:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我想把这个背景改成原来的黑色。这个背景不是纯黑色的。其值包含1、2或3。使用以下代码后,我得到的背景值非常接近黑色,但不是黑色。虽然背景看起来是黑色的

img = cv2.imread("images.bmp")

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

ret, thresh = cv2.threshold(gray, 0, 255, cv2. THRESH_BINARY)

img[thresh == 5] = 0

kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (5, 5))
erosion = cv2.erode(img, kernel, iterations = 1)

cv2.namedWindow('image', cv2.WINDOW_NORMAL)
cv2.imshow("image", erosion)
cv2.waitKey(0)
cv2.destroyAllWindows()

Input image


Tags: 代码imageimgcv2kernelcolor背景images
2条回答

尝试替换此:

ret, thresh = cv2.threshold(gray, 0, 255, cv2. THRESH_BINARY)

img[thresh == 5] = 0

有了这个:

# threshold to 10% of the maximum
threshold = 0.10 * np.max(img)
img[gray <= threshold] = 0

问题是cv2.threshold()不为您计算阈值,而是应用一个阈值,例如,代码中的thresh已经是阈值图像。你知道吗

(已编辑)

据我所知,这应该能解决你的问题。你知道吗

import cv2

gray = cv2.imread(r"brain.png", cv2.IMREAD_GRAYSCALE)

thresh_val = 5
gray[gray < thresh_val] = 0

除此之外,当心

ret, thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY)

因为第二个参数是阈值,每一个高于阈值的像素都被设置为第三个值,也就是255。你知道吗

相关问题 更多 >