niuwa冲 2020-04-08 21:45 采纳率: 0%
浏览 81

二值化識別不出來部分形狀

opencv for android中 我的形狀在二值化時兩個三角形和一個藍色圓形識別不出來 問問 有什麽思路嗎 图片说明

  • 写回答

1条回答 默认 最新

  • 码农阿豪@新空间 优质创作者: Java、后端开发技术领域 2024-07-25 16:09
    关注
    让阿豪来帮你解答,本回答参考chatgpt3.5编写提供,如果还有疑问可以评论或留言
    针对这个问题,我们可以采取以下思路来解决:
    1. 确认二值化参数是否正确:首先确保二值化的阈值和参数设置是正确的,使得图像能够正确地被二值化成黑白两色。
    2. 检查形状的轮廓是否清晰:通过边缘检测算法(比如Canny边缘检测)来获取形状的轮廓,确保轮廓清晰明显。
    3. 使用形状检测算法:利用OpenCV中的形状检测算法(比如轮廓检测)来检测并识别图像中的三角形和圆形等形状。
    4. 调整参数和优化算法:根据实际情况调整参数和优化算法,使得形状检测能够更准确地识别目标形状。 以下是一个简单的实例代码,用于在OpenCV中检测并绘制图像中的形状:
    import cv2
    import numpy as np
    image = cv2.imread('shapes.jpg')
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
    _, thresh = cv2.threshold(gray, 240, 255, cv2.THRESH_BINARY)
    contours, hierarchy = cv2.findContours(thresh, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
    for contour in contours:
        approx = cv2.approxPolyDP(contour, 0.01 * cv2.arcLength(contour, True), True)
        x = approx.ravel()[0]
        y = approx.ravel()[1] - 10
        if len(approx) == 3:
            cv2.drawContours(image, [approx], 0, (0, 255, 0), 5)
        elif len(approx) == 4:
            cv2.drawContours(image, [approx], 0, (0, 0, 255), 5)
        else:
            cv2.circle(image, (x, y), 10, (255, 0, 0), -1)
    cv2.imshow('shapes', image)
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    

    通过以上思路和代码,我们可以更好地识别和显示图像中的三角形和圆形。如果还存在问题,可以尝试调整参数或者采用更复杂的形状检测算法来进一步优化。

    评论

报告相同问题?