以下是使用OpenCV库实现根据红线进行寻迹的Python程序的示例代码:

import cv2
import numpy as np

# 设置视频文件路径或摄像头索引
video_path = 'path_to_video_file'  # 替换为实际的视频文件路径,或者使用摄像头输入时设置为0
cap = cv2.VideoCapture(video_path)

# 设置红色阈值范围
lower_red = np.array([0, 100, 100])
upper_red = np.array([10, 255, 255])
lower_red2 = np.array([160, 100, 100])
upper_red2 = np.array([179, 255, 255])

while True:
    # 读取视频帧
    ret, frame = cap.read()

    if not ret:
        break

    # 转换颜色空间为HSV
    hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)

    # 对红色进行阈值分割
    mask1 = cv2.inRange(hsv, lower_red, upper_red)
    mask2 = cv2.inRange(hsv, lower_red2, upper_red2)
    mask = cv2.bitwise_or(mask1, mask2)

    # 进行形态学操作,填充空洞并去除噪声
    kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5))
    mask = cv2.morphologyEx(mask, cv2.MORPH_CLOSE, kernel)

    # 寻找轮廓
    contours, _ = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

    # 寻找最大轮廓
    if len(contours) > 0:
        max_contour = max(contours, key=cv2.contourArea)

        # 计算最大轮廓的质心
        M = cv2.moments(max_contour)
        if M["m00"] != 0:
            cx = int(M["m10"] / M["m00"])
            cy = int(M["m01"] / M["m00"])

            # 在图像上绘制质心
            cv2.circle(frame, (cx, cy), 5, (0, 255, 0), -1)

            # 判断质心位置,进行相应的动作
            if cx < frame.shape[1] // 2:
                print("向左转")
                # 执行向左转的动作
            elif cx > frame.shape[1] // 2:
                print("向右转")
                # 执行向右转的动作
            else:
                print("直行")
                # 执行直行的动作

    # 显示图像
    cv2.imshow("Frame", frame)
    cv2.imshow("Mask", mask)

    # 按下q键退出程序
    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# 释放视频流和关闭窗口
cap.release()
cv2.destroyAllWindows()

请确保安装了OpenCV库,并将path_to_video_file替换为实际的视频文件路径。如果要使用摄像头输入,请将video_path设置为0。

该程序从视频文件或摄像头读取帧,将帧转换为HSV颜色空间,通过设定的红色阈值范围对图像进行阈值分割,然后进行形态学操作以填充空洞并去除噪声。接下来,程序寻找轮廓,并找到最大轮廓的质心。根据质心的位置,程序判断执行相应的动作(向左转、向右转或直行),并在图像上绘制质心。最后,程序显示图像,并通过按下q键退出程序。

opencv python库实现根据红线进行寻迹的程序能实现左右拐弯T型路口已经直线寻迹

原文地址: https://www.cveoy.top/t/topic/h97c 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录