• 大小: 5KB
    文件类型: .zip
    金币: 2
    下载: 0 次
    发布日期: 2024-01-27
  • 语言: 其他
  • 标签: CV巡线  

资源简介

不多解释了,收集,训练,算法。全套最新程序,自动巡线。 该源码主要应用导航,不需要激光雷达传感器,只需要一个中央摄像头、PC作为图像处理外设。在树莓派应用opencv就可以对小车进行定位,并且进行路径规划,到达指定的目的地。

资源截图

代码片段和文件信息

__author__ = ‘Avi‘

import numpy as np
import cv2
from robotpi_movement import Movement
from rev_cam import rev_cam

import time
import os


class CollectTrainingData(object):
    “““
    input:
        commands and video
    output:
        带有标签的灰度图像集,标签(0 1 2 3)分别代表(前进, 左转,右转,停止)
        每种标签数量上限1000张,像素为H*W = 80×180
    “““
    def __init__(self):

        self.raw_height = 480  # 原始视频高度
        self.raw_width = 640  # 原始视频宽度
        self.video_width = 480  # 截取图像宽度
        self.video_height = 180  # 截取图像高度
        self.NUM = 4  # 分类数量:0 1 2 3
        self.range = 20 # 每个分类的图片数
        self.data_path = “dataset“
        self.saved_file_name = ‘labeled_img_data_‘ + str(int(time.time()))

        self.mv = Movement()


        # create labels
        self.k = np.zeros((self.NUM self.NUM) ‘float‘)
        for i in range(self.NUM):
            self.k[i i] = 1

        self.collect_image()

    def collect_image(self):

        # 初始化数数
        total_images_collected = 0
        num_list = [0 0 0 0]
        cap = cv2.VideoCapture(0)
        images = np.zeros((1 self.video_height * self.video_width) dtype=float)
        labels = np.zeros((1 self.NUM) dtype=float)

        # Send an action to begin program.
        # command.action()
        self.mv.wave_hands()

        while cap.isOpened():
            _ frame = cap.read()
            frame = rev_cam(frame)
            resized_height = int(self.video_width * 0.75)
            # 计算缩放比例
            frame = cv2.resize(frame (self.video_width resized_height))
            frame = cv2.cvtColor(frame cv2.COLOR_BGR2GRAY)
            # slice the lower part of a frame
            res = frame[resized_height - self.video_height: :]
            cv2.imshow(“review“ res)

            command = cv2.waitKey(1) & 0xFF
            if command == ord(‘q‘):
                break
            # forward -- 0
            elif command == ord(‘w‘):
                if num_list[0] < self.range:
                    num_list[0] += 1
                    total_images_collected += 1
                    self.mv.move_forward(times=300)
                    res = np.reshape(res [1 -1])
                    images=np.vstack((images res))
                    labels = np.vstack((labels self.k[0]))
                else:
                    # Wave both hands here.
                    self.mv.rise_hands()
                    self.mv.move_forward(times=300)
                    continue

            # forward-left -- 1
            elif command == ord(‘a‘):
                if num_list[1] < self.range:
                    num_list[1] += 1
                    total_images_collected += 1
                    self.mv.left_ward()
                    res = np.reshape(res [1 -1])
                    images=np.vstack((images res))
                    labels = np.vstack((labels self.k[1]))
                else:
                    # Wave left hand here.
                    self.mv.left_hand()
                    self.mv.left_wa

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     文件        6252  2019-03-07 21:21  04.01.Train_model_tensorflow.py
     文件        2464  2019-02-27 09:51  04.03.AutoDrive_tensorflow.py
     文件        5722  2019-04-10 10:33  04.00.Collect_offline.py

评论

共有 条评论

相关资源