擅长:python、mysql、java
<p>我建议您转换为<a href="https://en.wikipedia.org/wiki/HSL_and_HSV" rel="nofollow noreferrer">HSV colourspace</a>并查找以下饱和(彩色)像素:</p>
<pre><code>import cv2
# Load background and foreground images
bg = cv2.imread('A.jpg')
fg = cv2.imread('B.jpg')
# Convert to HSV colourspace and extract just the Saturation
Sat = cv2.cvtColor(fg, cv2.COLOR_BGR2HSV)[..., 1]
# Find best (Otsu) threshold to divide black from white, and apply it
_ , mask = cv2.threshold(Sat,0,1,cv2.THRESH_BINARY+cv2.THRESH_OTSU)
# At each pixel, choose foreground where mask is set and background elsewhere
res = np.where(mask[...,np.newaxis], fg, bg)
# Save the result
cv2.imwrite('result.png', res)
</code></pre>
<p><a href="https://i.stack.imgur.com/IGVvS.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/IGVvS.png" alt="enter image description here"/></a></p>
<p>请注意,如果它拾取的彩色像素太多或太少,则可以对其进行修改。如果吸得太少,你可能会放大面膜,如果吸得太多,你可能会腐蚀面膜。您还可以在掩蔽之前将图像模糊一点,这可能不是一个坏主意,因为这是一个带有压缩伪影的“讨厌的”</em>JPEG。如果你只想让某些颜色通过,或者某个亮度或混合,你可以改变饱和度测试,使其更具临床意义和针对性</p>