【发布时间】:2020-12-09 10:07:00
【问题描述】:
【问题讨论】:
-
你现在尝试了什么?
-
你试过任何代码吗?可以的话可以发一下吗
标签: python image numpy opencv image-processing
【问题讨论】:
标签: python image numpy opencv image-processing
您可以通过使用bitwise_and() 函数和thresholding 来实现您的目标。
步骤:
mask。(这里使用thresholding,但也可以使用其他方法)bitwise_and(图像和蒙版)提取所需的regions。masked regions获取输出。这里是示例代码:
import cv2
import numpy as np
img = cv2.imread('input.jpg')
# creating mask using thresholding over `red` channel (use better use histogram to get threshoding value)
# I have used 200 as thershoding value it can be different for different images
ret, mask = cv2.threshold(img[:, :,2], 200, 255, cv2.THRESH_BINARY)
mask3 = np.zeros_like(img)
mask3[:, :, 0] = mask
mask3[:, :, 1] = mask
mask3[:, :, 2] = mask
# extracting `orange` region using `biteise_and`
orange = cv2.bitwise_and(img, mask3)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
img = cv2.cvtColor(gray, cv2.COLOR_GRAY2BGR)
# extracting non-orange region
gray = cv2.bitwise_and(img, 255 - mask3)
# orange masked output
out = gray + orange
cv2.imwrite('orange.png', orange)
cv2.imwrite('gray.png', gray)
cv2.imwrite("output.png", out)
结果:
【讨论】: