python - 如何在图像中的点周围绘制正方形

标签 python opencv image-processing

我有一个带有白色点的二进制图像。如何使用OpenCV识别并在这些点周围绘制正方形?

问题是这些点非常小,到目前为止,所有尝试都未能找到所有点。

这是输入图像:

这是我感兴趣的结果:

是否可以使用OpenCV功能?
如果不是(由于大小),最有效的方法是什么?

最佳答案

使用以下方法可以找到解决方案。

解决方案的完整代码:

import cv2
import numpy as np
img = cv2.imread('test.jpg', 0)
output_img = img.copy()
cv2.threshold(img,0,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU,img)

kernel = np.ones((50,70), np.uint8)
img = cv2.dilate(img, kernel, iterations=1)


im2,contours, hier = cv2.findContours(img.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
for c in contours:
    # get the bounding rect
    x, y, w, h = cv2.boundingRect(c)
    # draw a white rectangle to visualize the bounding rect
    cv2.rectangle(output_img, (x, y), (x + w, y + h), 255, 1)

cv2.imshow('output',output_img)
cv2.waitKey(0)
  • 首先,您必须根据需要创建一个内核。
  • 内核大小越大,属于群集的点数就会越高。
  • 然后使用cv2.dilate方法,您应该使用
    创建内核。
  • 之后,您应该找到膨胀图像的轮廓并获得
    这些轮廓的边界矩形。
  • 可以将一个矩形视为一个群集。
    您可以使用kernel = np.ones((50,70), np.uint8)更改群集大小,此处为50 x70。

  • 输出:

    关于python - 如何在图像中的点周围绘制正方形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52044149/

    相关文章:

    python - RecycleView 内的 Kivy 尺寸标签

    image-processing - 如何使用 UnfoldingMaps 库处理处理中的这些错误消息

    ubuntu - 在 Ubuntu 中调整大于 X 的图像

    python - 使用 python 和 xlib 编写合成窗口管理器

    python - vim:符号查找错误:/lib/x86_64-linux-gnu/libpython3.8.so.1.0: undefined symbol :XML_SetHashSalt

    javascript - 如何在 Node.js 中将 OpenCV 图像矩阵编码为 base64

    python - 如何使用 python 和 Opencv 计算图像中的点数?

    c++ - 编译错误 : undefined reference to‘__atomic_fetch_add_4’

    image - Eigen 变换 : Why do high eigenvalues indicate regions of text?

    python - 如何列出模块中的所有功能?