资源简介
不多解释了,收集,训练,算法。全套最新程序,自动巡线。
该源码主要应用导航,不需要激光雷达传感器,只需要一个中央摄像头、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
- 上一篇:西门子DDC方案详细方案
- 下一篇:闹奥象棋引擎 十分强大
评论
共有 条评论