如何解决如何检测图像python中的特定彩色对象红色没有cv2
大家好,
我对 python 中的图像处理很陌生。我实际上正在为简单的任务而苦苦挣扎。
我正在尝试使用 skimage 库而不是 cv2 识别图像中的红色对象。
然后我必须计算图像中那些彩色(在我的情况下为红色)对象。
我的尝试:
我尝试过 hsv 转换和创建掩码。使用这张地图,我创建了只有“红色”对象的图像。
代码:
img_hsv=cv2.cvtColor(img,cv2.COLOR_BGR2HSV)
lower_red = np.array([0,70,50])
upper_red = np.array([10,255,255])
mask1 = cv2.inRange(img_hsv,lower_red,upper_red)
mask1 = morphology.erosion(mask1,morphology.disk(3))
mask1 = morphology.dilation(mask1,morphology.disk(3))
lower_red = np.array([170,50])
upper_red = np.array([180,255])
mask2 = cv2.inRange(img_hsv,upper_red)
mask2 = morphology.erosion(mask2,morphology.disk(3))
mask2 = morphology.dilation(mask2,morphology.disk(3))
mask = mask1 | mask2
mask = morphology.erosion(mask,morphology.disk(3))
mask = morphology.dilation(mask,morphology.disk(4))
output_img = img.copy()
output_img[np.where(mask==0)] = 0
我需要这样的东西,但是通过使用 skimage 库,或者不使用 cv2 库。
在检测到有色物体后,我需要对它们进行计数。我会使用 label() 函数,但我的预处理部分不正确。
感谢您的所有帮助。
编辑 06/02/2021 17:31
好的,我可能已经找到了某种解决方案,代码如下
def AntonMlynar(img):
img_lab = rgb2lab(img)
img_red = img_lab[:,:,1]
#plt.hist(img_red.ravel(),bins=256,histtype='bar',color='blue')
#plt.imshow(img_red)
mask = img_red>20
mask = morphology.dilation(mask,morphology.disk(2))
mask = morphology.erosion(mask,morphology.disk(5))
mask = morphology.dilation(mask,morphology.disk(3))
plt.imshow(mask)
labels = label(mask,return_num=True,connectivity=2)
return labels[1]
但我仍然无法数清那些物体。它需要扩展到具体的对象。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。