gpt4 book ai didi

python - 如何获取在 OpenCV、Python 中使用掩码找到的形状的 (x,y) 坐标?

转载 作者:行者123 更新时间:2023-12-02 16:05:31 25 4
gpt4 key购买 nike

我正在尝试在图像上定位某些项目。简化形式的图像如下所示: enter image description here

我想获取第二个矩形顶部的黑色粗体文本以及三个彩色矩形的 (x,y) 坐标。

我已经准备好了蒙版,除了我无法弄清楚的黑色文本蒙版。然而,文本总是在矩形的顶部,所以如果我能够找出底部大矩形的位置,我也会知道文本的位置。

这些是我得到的输出: enter image description here

我尝试使用基于 this comment 的 ConnectedComponents 函数但是除了为各种对象着色和分组之外,我没有设法继续前进,所以我没有在下面包含该片段以使事情尽可能清楚。

到目前为止,这是我的代码:

import cv2
import numpy as np
import imutils

PATH = "stackoverflow.png"
img = cv2.imread(PATH)
imgHSV = cv2.cvtColor(img,cv2.COLOR_BGR2HSV)

mask_border = cv2.inRange(imgHSV,np.array([0,0,170]),np.array([0,0,175]))
mask_green = cv2.inRange(imgHSV,np.array([76,221,167]),np.array([76,221,167]))
mask_pink = cv2.inRange(imgHSV,np.array([168,41,245]),np.array([172,41,252]))
mask_red = cv2.inRange(imgHSV,np.array([4,207,251]),np.array([4,207,251]))
#mask_black = ???

all_masks = cv2.bitwise_or(mask_border, mask_green)
all_masks = cv2.bitwise_or(all_masks, mask_pink)
all_masks = cv2.bitwise_or(all_masks, mask_red)

cv2.imshow("Masks", all_masks)

imgResult = cv2.bitwise_and(img,img,mask=all_masks)

cv2.imshow("Output", imgResult)

cv2.waitKey(0)

最佳答案

您可以对图像进行二值化,然后应用一些形态学操作来获得正确的连通分量。这是一种方法。您可以对其进行微调以获得正确的输出。

import numpy as np
import cv2
import os
image=cv2.imread('path/to/image.jpg')
###binarising
gray=cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
ret2,th2 = cv2.threshold(gray,0,255,cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU)

###applying morphological operations to dilate the image
kernel=np.ones((3,3),np.uint8)
dilated=cv2.dilate(th2,kernel,iterations=3)

### finding contours, can use connectedcomponents aswell
_,contours,_ = cv2.findContours(dilated, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)

### converting to bounding boxes from polygon
contours=[cv2.boundingRect(cnt) for cnt in contours]
### drawing rectangle for each contour for visualising
for cnt in contours:
x,y,w,h=cnt
cv2.rectangle(image,(x,y),(x+w,y+h),(0,255,0),2)

普通二值图像

binary image

膨胀图像

dilated image

检测到边界框的输出 output with detected bounding boxes

关于python - 如何获取在 OpenCV、Python 中使用掩码找到的形状的 (x,y) 坐标?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62679580/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com