【问题标题】:How to find the coordinates of a rectangle in an image in Python?如何在 Python 中找到图像中矩形的坐标?
【发布时间】:2021-08-23 08:27:51
【问题描述】:

我在图像中有一个文本,它周围有一个边界框,如下所示:

我要做的是找到左上角和右下角的坐标来计算矩形的对角线。 我在 python 库中没有发现任何特别的东西。 这是矩形的代码:

image = cv2.imread('output.jpg')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
blur = cv2.GaussianBlur(gray, (9,9), 0)
thresh = 
cv2.adaptiveThreshold(blur,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C, 
cv2.THRESH_BINARY_INV,11,30)


kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (9,9))
dilate = cv2.dilate(thresh, kernel, iterations=4)


cnts = cv2.findContours(dilate, cv2.RETR_EXTERNAL, 
cv2.CHAIN_APPROX_SIMPLE)
cnts = cnts[0] if len(cnts) == 2 else cnts[1]

ROI_number = 0
for c in cnts:
   area = cv2.contourArea(c)
   if area > 10000:
     x,y,w,h = cv2.boundingRect(c)
     boundbox = cv2.rectangle(image, (x, y), (x + w, y + h), 
     (36,255,12), 3)

有什么想法吗? 提前谢谢!

【问题讨论】:

  • 您正在创建具有左上角和右下角的矩形。你有什么问题?
  • @JanWilamowski 你是什么意思?它们不是坐标
  • 也许我不明白。你想计算边界矩形的对角线吗?你用cv2.boundingRect(c)检索的那个?
  • @JanWilamowski 我想要矩形的角坐标(以像素为单位),boundingRect 没有给我
  • 代码创建了一个boundbox,坐标为(x, y), (x + w, y + h)。这不是你想要的吗?

标签: python-3.x image-processing python-imaging-library opencv3.0 farsi


【解决方案1】:

如果你有图像的数组,你可以编写一个算法,首先水平扫描数组的每一行,然后垂直搜索你正在寻找的 y 和 x 的坐标。 这是一个 RGB 图像,矩形看起来非常明显并且对比度很好,所以我建议你先提取图像的“G”,要做到这一点,你必须抽取你的数组以提取绿色部分图像,然后运行 ​​for 循环在该行或列中查找具有您喜欢的强度值的一定数量的像素,然后将找到它的索引作为坐标返回。

最好的问候

【讨论】:

    猜你喜欢
    • 2019-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-01
    • 1970-01-01
    • 2020-11-16
    • 1970-01-01
    • 2010-10-12
    相关资源
    最近更新 更多