一、安装Anacoda
因为我原本是已经安装了python,后面直接卸载了,然后安装了最新版的anacoda
下载网址为:
Index of /anaconda/archive/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror
下载版本是:
按照安装教程直接安装即可:
二、下载YOLO
1.创建虚拟环境
conda create -n yolo8 python=3.10
创建完成后显示的内容
2.激活虚拟环境
conda activate yolo8
命令行输入该代码,如果无报错,表示虚拟环境创建成功
3.ultralytics下载:
(ultralytics是一个功能强大且易于使用的YOLO实现,适用于需要在计算机视觉任务中进行目标检测的开发者)
激活虚拟环境后,命令行输入该指令。
pip install ultralytics
具体展示如下:
1.conda activate yolo8 激活yolo8环境
2.pip install ultralytics 安装ultralytics
3.安装完成,查看是否安装好,输入pip list
4.测试YOLO8
安装模型yolov8n,然后检测图片
ultralytics的网页下载地址(如果直接用pip命令行安装,此处不需要下载):
”ultralytics“ 的搜索结果 | GitHub 中文社区 (github-zh.com)
三、图片检测结果
以下是在VScode里面的yolov8使用代码,图片结果为识别结果。
import time
import cv2
import numpy as np
import pyrealsense2 as rs
from ultralytics import YOLO # 将YOLOv8导入到该py文件中
# 深度相机
pipeline = rs.pipeline() # 定义流程pipeline,创建一个管道
config = rs.config() # 定义配置config
config.enable_stream(rs.stream.depth, 1280, 720, rs.format.z16, 30) # 初始化摄像头深度流
config.enable_stream(rs.stream.color, 1280, 720, rs.format.bgr8, 30) # 初始化摄像头彩色流
pipe_profile = pipeline.start(config) # 启用管段流
align = rs.align(rs.stream.color) #这个函数用于将深度图像与彩色图像对齐
def get_aligned_images(): #定义一个获取图像帧的函数,返回深度和彩色数组
frames = pipeline.wait_for_frames() # 等待获取图像帧
depth_frame = frames.get_depth_frame() #获取深度帧
color_frame = frames.get_color_frame() # 获取对齐帧中的的color帧
depth_image = np.asanyarray(depth_frame.get_data()) # 将深度帧转换为NumPy数组
color_image = np.asanyarray(color_frame.get_data()) # 将彩色帧转化为numpy数组
return depth_image,color_image
if __name__ == '__main__':
model = YOLO(r"E:\Deep learning\YOLOv8\yolov8n.pt") # 加载权重文件,如需要更换为自己训练好的权重best.pt即可
# 设置计时器
start_time = time.time()#获取当前时间
interval = 3 # 间隔时间(秒)
try:
while True:
img_depth,img_color = get_aligned_images() # 获取深度帧和彩色帧
# cv2.applyColorMap()将深度图像转化为彩色图像,以便更好的可视化分析
depth_colormap = cv2.applyColorMap(cv2.convertScaleAbs(img_depth, alpha=0.07), cv2.COLORMAP_JET)
# 将图像color_impage和depth_colormap水平堆叠
images = np.hstack((img_color, depth_colormap))
# 设置窗口,窗口大小根据图像自动调整
cv2.namedWindow('RealSense', cv2.WINDOW_AUTOSIZE)
# 将图像images显示在窗口中
cv2.imshow('RealSense', images)
# 检查是否达到间隔时间
if time.time() - start_time >= interval:
start_time = time.time() # 重置计时器
source = [img_color]#将其赋值给source列表
# 调用YOLOv8中的推理,还是相当于把d435i中某一帧的图片进行detect推理
#results = model.predict(source,save=True,show_conf=False) # model = YOLO(r"E:\Deep learning\YOLOv8\yolov8n.pt")
# 置信度show_conf=False,表示不显示置信度
results = model.predict(source,save=True,show_conf=False)
key = cv2.waitKey(1)#等待用户输入
# Press esc or 'q' to close the image window
if key & 0xFF == ord('q') or key == 27:
cv2.destroyAllWindows()
pipeline.stop()
break
finally:
# Stop streaming
pipeline.stop()