Python opencv用笔记本摄像头检测道路拐角

这里利用了Harris角点来检测物体边缘和路口拐角,其原理是:

人眼对角点的识别通常是在一个局部的小区域或小窗口完成的。如果在各个方向上移动这个特征的小窗口,窗口内区域的灰度发生了较大的变化,那么就认为在窗口内遇到了角点。如果这个特定的窗口在图像各个方向上移动时,窗口内图像的灰度没有发生变化,那么窗口内就不存在角点;如果窗口在某一个方向移动时,窗口内图像的灰度发生了较大的变化,而在另一些方向上没有发生变化,那么,窗口内的图像可能就是一条直线的线段。

代码如下:

import numpy as np
import cv2

cap = cv2.VideoCapture(0)

while 1:
    ret, img = cap.read()
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    gray = np.float32(gray)

    #对图像执行harris
    Harris_detector = cv2.cornerHarris(gray, 2, 3, 0.04)

    #腐蚀harris结果
    dst = cv2.dilate(Harris_detector, None)

    # 设置阈值
    thres = 0.01*dst.max()

    img[dst > thres] = [255,0,0]


    cv2.imshow(img,img)
    k = cv2.waitKey(30)
    if k == 27:
        break

cap.release()
cv2.destroyAllWindows()
经验分享 程序员 微信小程序 职场和发展