python - 如何掩盖这两个图像,所以我只得到大圆圈?
问题描述
我正在尝试比较 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)
解决方案
可以使用 HSV 颜色空间来完成。
试试这些界限:
Lower: [18, 100, 44]
Upper: [36, 156, 71]
有了它们,您可能可以获得如下图像蒙版。
要进一步改进它,您可以使用具有 OpenCV 功能的连接组件:cv2.connectedComponentsWithStats。您可以通过检查此答案获得最大的组件(这就是您想要的)
推荐阅读
- c - 增量问题
- r - 从 wordcore 预测中创建数据框
- javascript - 使用 axios post 请求下载图像
- r - R加快在光栅文件中添加常数
- azure-devops - 无法在 Azure DevOps yml 管道中解析 $(Release.ReleaseId)
- python - 如何为导入的模块配置日志记录?
- arrays - 如何将 json 字符串转换为 bash 中的单个字符数组?
- apache-spark - 使用 SparklyR 连接到 Spark 时出错
- regex - 如何使用正则表达式在回车和换行之前附加字符
- r - tidyverse 中是否有 R 函数可以使用代码选择列的元素?