首页 > 解决方案 > 如何掩盖这两个图像,所以我只得到大圆圈?

问题描述

我正在尝试比较 Image1 和 Image2 中的两个圆形区域。我当前的代码为 image1 提供了一个白色圆圈,但为 image2 分崩离析。

还有另一种方法可以找到两个图像的两个圆形区域吗?

import cv2
import numpy as np

img = cv2.imread('Resources/Image2.jpg')
imgHSV = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)

lower = np.array([40,28,18])
upper = np.array([70,161,255])

#imgGray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)

mask = cv2.inRange(imgHSV, lower, upper)

maskInv = cv2.bitwise_not(mask)
#imgCanny = cv2.Canny(imgBitGrey,150,200)


cv2.imwrite('Resources/Image2_Inv.jpg', maskInv)

#cv2.imshow('Original',img)
#cv2.imshow('Grey',imgGray)
#cv2.imshow('BitGrey',imgBitGrey)
#cv2.imshow('Canny',imgCanny)
#cv2.imshow('InvCanny',imgInvCanny)

cv2.imshow('maskInv',maskInv)
cv2.imshow('Mask',mask)
#cv2.imshow('Invert',imgInvMask)

cv2.waitKey(0)

原来的: 原始图像

修改的: 修改后的图像

Image1_Inv Image2_Inv

标签: pythonopencv

解决方案


可以使用 HSV 颜色空间来完成。

试试这些界限:

Lower: [18, 100, 44]
Upper: [36, 156, 71]

有了它们,您可能可以获得如下图像蒙版。

在此处输入图像描述

要进一步改进它,您可以使用具有 OpenCV 功能的连接组件:cv2.connectedComponentsWithStats。您可以通过检查此答案获得最大的组件(这就是您想要的)


推荐阅读