机器人视觉课设

本文详细介绍了机器人视觉课程设计的过程,包括使用Labelmage软件标注图像,数据预处理(归一化、伽马校正),以及通过几何变换(旋转、缩放、平移)和像素变换(椒盐噪声、高斯噪声)扩展数据集10倍以上。
摘要由CSDN通过智能技术生成

实验步骤

步骤一

采集20张以上的图片,并使用LabelImage软件对数据中的目标进行标注。

Labellmage软件的安装

链接: (https://pan.baidu.com/s/1Yjsv-jJQC4SWjV7ZEgsYYg ).
提取码:claj
打开Labellmage的效果图如下图

Labellmage的快捷键如下:

步骤二

实现采集数据的可视化显示(读取图片和标签,将标签结果显示在图片上)

将步骤一所得的xml标记图片保存在文件名为xml的文件中,将原图片保存在文件名为image的文件中。创建一个文件名为var的文件用于保存可视化后的图片。

代码如下:

import cv2
import xml.etree.ElementTree as ET
import os
#可视化
img_path = 'test'
xml_path = 'xml'
save_path = 'var'
colors = {'truck': (0, 0, 255), 'car': (0, 255, 0), 'people': (255, 0, 0)}

img_names = os.listdir(img_path)#以列表的形式获取文件夹中的所有文件的名字和格式(例如:0.jpg)
for img_name in img_names:
    img = os.path.join(img_path, img_name)#将文件的绝对路径与每个文件名字进行拼接,以获取该文件
    img = cv2.imread(img)#读取该文件(图片)
    xml_name = img_name.split('.')[0]#split()分割文件路径,取分割后的第一个元素
    xml = os.path.join(xml_path, xml_name + '.xml')#拼接也可以直接使用+号

    #读取xml文件
    xml_file = ET.parse(xml)
    root = xml_file.getroot()

    objects = root.findall('object')#查找所有名字为‘objects’的标签内容
    for obj in objects:
        obj_name = obj.find('name').text.strip()#查找名字为‘name'的标签内容
        xmin = int(float(obj.find('bndbox').find('xmin').text.strip()))#查找名字为‘bndbox’标签下的‘xmin’标签内容
        xmax = int(float(obj.find('bndbox').find('xmax').text.strip()))
        ymin = int(float(obj.find('bndbox').find('ymin').text.strip()))
        ymax = int(float(obj.find('bndbox').find('ymax').text.strip()))

        cv2.rectangle(img, (xmin, ymax), (xmax, ymin), colors[obj_name])#画矩形,参数2和3是矩形的左上角点和右下角点的坐标
        cv2.putText(img, obj_name, (xmin, ymin-5), fontFace=cv2.CALIB_SAME_FOCAL_LENGTH,
                    fontScale=0.5, color=colors[obj_name])#在图片上附上文字,字体和字号和颜色

    cv2.imshow('result', img)#显示
    cv2.waitKey(1000)#等待1000微秒
    cv2.imwrite(os.path.join(save_path, img_name ), img)#将img写入到

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值