如何编辑蒙版图像?

How do I edit a masked image?

我如何使我蒙版的图像更平滑?我想去掉第二张图的小白点,也想去掉一些被遮挡的地方,请问怎么办?

import cv2
import numpy as np

img = cv2.imread("colors.jpg")
height,width = 720,720
img = cv2.resize(img,(width,height))

hsv = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)

lower_range = np.array([100,50,50])
upper_range = np.array([150,255,255])

mask = cv2.inRange(hsv, lower_range, upper_range)
#res = cv2.bitwise_and(img,img, mask=mask)

cv2.imshow("Image",img)
cv2.imshow("Mask",mask)
#cv2.imshow("res",res)

cv2.waitKey(0)
cv2.destroyAllWindows

尝试使用计算机视觉的闭合和开放概念。你需要在你的情况下进行侵蚀以去除微小的白点。

有两件事可以根据您的要求控制最终结果,即 kernel sizeiterations

这是我可以重现并提供接近解决方案的代码。

import numpy as np

img = cv2.imread("colors.jpg")
height,width = 720,720
img = cv2.resize(img,(width,height))

hsv = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)

lower_range = np.array([100,50,50])
upper_range = np.array([150,255,255])
kernel = np.ones((5,5),np.uint8)
mask = cv2.inRange(hsv, lower_range, upper_range)
erosion = cv2.erode(mask,kernel,iterations = 1)
#res = cv2.bitwise_and(img,img, mask=mask)


cv2.imshow("Image",img)
cv2.imshow("Mask",erosion)
#cv2.imshow("res",res)

cv2.waitKey(0)
cv2.destroyAllWindows
import cv2
import numpy as np
​
img = cv2.imread("colors.jpg")
height,width = 720,720
img = cv2.resize(img,(width,height))
​
hsv = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
​
lower_range = np.array([100,50,50])
upper_range = np.array([150,255,255])
kernel = np.ones((5,5),np.uint8)
mask = cv2.inRange(hsv, lower_range, upper_range)
erosion = cv2.erode(mask,kernel,iterations = 1)
#res = cv2.bitwise_and(img,img, mask=mask)
​
​
cv2.imshow("Image",img)
cv2.imshow("Mask",erosion)
#cv2.imshow("res",res)
​
cv2.waitKey(0)
cv2.destroyAllWindows

结果: