姜小鱼-officer 2025-07-06 15:03 采纳率: 28.6%
浏览 87
已结题

23电赛e题视觉部分opencv树莓派

关于2023年电赛基础题部分的一些疑惑(本人使用的是opencv+树莓派+python):
基础第一小问原点指的是激光第一次打在屏幕上的点吗,还是正方形的中心位置,传给stm32的数据是否是原点坐标和任意位置激光点的坐标
基础第三小题:识别黑色胶带需要识别内外八个顶点的坐标传给stm32,还是只用识别内外其中一个边框即可?

  • 写回答

6条回答 默认 最新

  • 阿里嘎多学长 2025-07-06 15:03
    关注

    阿里嘎多学长整理AIGC生成,因移动端显示问题导致当前答案未能完全显示,请使用PC端查看更加详细的解答过程

    问题解答

    你在2023年电赛基础题部分遇到了视觉部分的问题,使用的是OpenCV、树莓派和Python。问题是关于原点指的是激光第一次打在屏幕上的点还是正方形的中心位置,传给STM32的数据是否是原点坐标和任意点坐标。

    根据OpenCV的坐标系统,原点是图像的左上角,x轴向右,y轴向下。激光第一次打在屏幕上的点是图像的坐标系统中的某个点,而不是原点坐标。

    如果你想获取激光第一次打在屏幕上的点的坐标,可以使用OpenCV的图像处理函数,例如cv2.findCirclesGrid()cv2.findChessboardCorners()等函数来检测圆形或棋盘形状,然后计算出激光打在屏幕上的点的坐标。

    传给STM32的数据可以是原点坐标和任意点坐标,具体取决于你的应用场景和需求。如果你需要获取激光打在屏幕上的点的坐标,可以将其转换为原点坐标,然后传递给STM32。

    以下是一个简单的示例代码,使用OpenCV检测圆形,然后计算出圆心的坐标:

    import cv2
    
    # 读取图像
    img = cv2.imread('image.jpg')
    
    # 检测圆形
    circles = cv2.HoughCircles(img, cv2.HOUGH_GRADIENT, 1, 20, param1=100, param2=30)
    
    # 计算圆心的坐标
    if circles is not None:
        x, y = circles[0]
        print(f'圆心坐标:({x}, {y})')
    

    这个示例代码只是一个简单的示例,实际情况中可能需要根据你的应用场景和需求进行修改。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 7月14日
  • 创建了问题 7月6日