麻烦大佬们帮我看一下这个视觉识别的代码错在哪里了,为什么运行不出来

import cv2
import numpy as np

def find_gate_position(image_path, recursion_limit=5):
    print(f"Attempting to read image: {image_path}")
    # 读取图像
    image = cv2.imread(image_path)
    if image is None:
        print("Error: Image not found or unable to read.")
        return

    # 转换为灰度图像(可选,取决于后续处理需求)
    gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

    # 边缘检测(使用Canny算法,参数可能需要根据实际情况调整)
    edges = cv2.Canny(gray, threshold1=50, threshold2=150)

    # 查找轮廓(这里假设闸门在图像中是明显的形状或区域)
    contours, hierarchy = cv2.findContours(edges, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)

    # 初始化最大面积为0
    max_area = 0
    gate_position = None  # 初始化gate_position为None

    # 遍历轮廓,找到可能是闸门的轮廓(这里需要添加具体的识别逻辑)
    for contour in contours:
        # 计算轮廓的边界框
        x, y, w, h = cv2.boundingRect(contour)

        # 假设闸门是图像中最大的矩形(这只是一个假设,实际情况可能不同)
        area = w * h
        if area > max_area:  # 比较面积大小
            max_area = area
            gate_position = (x, y, w, h)

    # 如果找到了闸门位置,则输出;否则,输出未找到
    if gate_position is not None:  # 检查gate_position是否被定义
        print(f"Gate position found: {gate_position}")
        # 可以在原图上绘制闸门位置
        cv2.rectangle(image, (gate_position[0], gate_position[1]),
                      (gate_position[0] + gate_position[2], gate_position[1] + gate_position[3]),
                      (0, 255, 0), 2)
        cv2.imshow('Gate Detected', image)
        cv2.waitKey(0)
        cv2.destroyAllWindows()
    else:
        print("Gate position not found.")
        # 检查是否达到递归调用次数限制
        if recursion_limit > 0:
            print(f"Recursion limit: {recursion_limit}")
            find_gate_position('2.jpg', recursion_limit - 1)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值