小编OM2*_*22O的帖子

OpenCV 检测物体及其旋转

我正在开发一个机器人项目,我们需要实现某种形式的图像识别来找到正确的路径。有一个旋转的圆盘,其方向如下所示:

在此输入图像描述

我编写了下面的代码,它使用网络摄像头成功捕获视频流,并尝试从提供的模板中查找磁盘的图像:

import cv2

IMGn = cv2.imread("North.png",0)
webcam = cv2.VideoCapture(0)
grayScale = True
key = 0

def transformation(frame,template):
    w, h = template.shape[::-1]
    res = cv2.matchTemplate(frame,template,cv2.TM_SQDIFF_NORMED)
    min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)
    top_left = min_loc
    bottom_right = (top_left[0] + w, top_left[1] + h)
    cv2.rectangle(frame,top_left, bottom_right, 255, 2)
    return frame

while (key!=ord('q')):
    check, frame = webcam.read()
    if(grayScale):
        frame = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
    
    frame = transformation(frame,IMGn)
    
    cv2.imshow("Capturing", frame)
    key = cv2.waitKey(1)

webcam.release()
cv2.destroyAllWindows()
Run Code Online (Sandbox Code Playgroud)

这不太好用,但至少可以找到指南针的大致轮廓。但是我根本不知道如何找到圆的旋转!尺寸似乎也是一个问题(当距离太远或太近时,跟踪就会混乱)。这是我第一次做任何与图像识别有关的事情,一般来说这没有帮助,所以请尝试简化你的答案。谢谢。


我遇到了 cv2.findContours 问题。它似乎返回 3 个值,而不是 2 个。除此之外,代码成功检测并裁剪图像,但在最后一步中无法找到线条。还有一个问题是,如果图片旋转超过 180 度,则会给出错误的结果,因为线旋转了超过 180 …

python opencv image-processing

3
推荐指数
1
解决办法
4913
查看次数

标签 统计

image-processing ×1

opencv ×1

python ×1