博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
货品目标检测样本制作方法
阅读量:7222 次
发布时间:2019-06-29

本文共 2511 字,大约阅读时间需要 8 分钟。

最近公司要做无人超市项目,基本实现方式是通过摄像头检测货柜里面有多少个什么类别的货品,也就是目标检测算法。该方法所需数据样本为标记了位置的货品图片,如下所示。货品目标检测样本制作方法

为了制作该图片,设计方法如下:
1、拍摄该样品360度的视频
2、将视频抓帧
3、将图片通过opencv拼装成样本

拍摄视频如下并抓帧的程序如下:


import osimport cv2path = "F:/objectdect/avi/"def openavifiletopic(filepath,index):    cap = cv2.VideoCapture(filepath)    if cap.isOpened():  # 判断是否正常打开        rval, frame = cap.read()    else:        rval = False    c = 0    num = 0    while rval:  # 循环读取视频帧        rval, frame = cap.read()        if (c % 10 == 0):            filesavepath = path + str(index) + "/" + str(num) + ".jpg"            cv2.imwrite(filesavepath, frame)  # 存储为图像            num = num + 1        c = c + 1    cap.release()for index in range (1,21):    pathavi = path + str(index)    rootdir = pathavi    list = os.listdir(rootdir)  # 列出文件夹下所有的目录与文件    for i in range(0, len(list)):        filepath = os.path.join(rootdir, list[i])        if os.path.isfile(filepath):            print(list[i])            filepath = pathavi + "/" + str(list[i])            # 你想对文件的操作            openavifiletopic(filepath,index)生成样本的程序如下:import randomimport cv2path = "F:/objectdect/all"for index in range(0,10001):    filepath = path + "/" + str(index) + ".jpg"    #产生一个1到5的随机数    numlist = [1,2,4]    rndnum = random.sample(numlist, 1)[0]    imglist = []    for numindex in range(1,rndnum+1):        #print(numindex)        #随机取出一个文件夹中的一个图片        classnum = random.randint(1, 20)        jpgpath = "F:/objectdect/avi/" + str(classnum) + "/" + str(random.randint(0, 200))+".jpg"        imgtemp = cv2.imread(jpgpath)        imgtemp = cv2.resize(imgtemp, (500, 500), interpolation=cv2.INTER_CUBIC)        imglist.append(imgtemp)    try:        print(rndnum)        if rndnum == 1:            imgall = cv2.hconcat(imglist)            res = cv2.resize(imgall, (500, 500), interpolation=cv2.INTER_CUBIC)            cv2.imwrite(filepath, res)  # 存储为图像        if rndnum == 2:            imgall = cv2.hconcat([imglist[0],imglist[1]])            res = cv2.resize(imgall, (500, 500), interpolation=cv2.INTER_CUBIC)            cv2.imwrite(filepath, res)  # 存储为图像        if rndnum == 4:            imgall1 = cv2.hconcat([imglist[0],imglist[1]])            imgall2 = cv2.hconcat([imglist[2], imglist[3]])            imgall = cv2.vconcat([imgall1, imgall2])            res = cv2.resize(imgall, (500, 500), interpolation=cv2.INTER_CUBIC)            cv2.imwrite(filepath, res)  # 存储为图像    except:        print("错误")

该程序保存了样本图片之后可以通过 voc数据集标记工具 生成对应的xml文件 即可开始目标检测算法的训练。

转载于:https://blog.51cto.com/yixianwei/2086358

你可能感兴趣的文章
3689: 异或之
查看>>
字符串模式匹配KMP算法
查看>>
Android Drawable和Bitmap图片之间转换
查看>>
Debian 8 安装 Nvidia 显卡驱动
查看>>
nginx静态文件访问
查看>>
SharePoint 2013中的默认爬网文件扩展名和分析文件类型
查看>>
c#-冒泡排序-算法
查看>>
IP釋放、清除、以及刷新DNS
查看>>
第二次作业
查看>>
小知识
查看>>
安装Vmware时竟然也会报错,错误信息见图
查看>>
20179311《网络攻防实践》第三周作业
查看>>
Ural 1042 Central Heating
查看>>
css兼容问题大全
查看>>
2018-2019-1 20165324《信息安全系统设计基础》实验五
查看>>
使用 Applet 渲染 jzy3d WireSurface 波动率曲面图
查看>>
9 Web开发——springmvc自动配置原理
查看>>
截取图片
查看>>
Python学习--01入门
查看>>
MySQL联合查询语法内联、左联、右联、全联
查看>>