码迷,mamicode.com
首页 > 其他好文 > 详细

货品目标检测样本制作方法

时间:2018-03-14 11:21:31      阅读:205      评论:0      收藏:0      [点我收藏+]

标签:voc   样本制作   目标检测   

最近公司要做无人超市项目,基本实现方式是通过摄像头检测货柜里面有多少个什么类别的货品,也就是目标检测算法。该方法所需数据样本为标记了位置的货品图片,如下所示。技术分享图片
为了制作该图片,设计方法如下:
1、拍摄该样品360度的视频
2、将视频抓帧
3、将图片通过opencv拼装成样本

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


import os
import cv2
path = "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 random
import cv2
path = "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文件 即可开始目标检测算法的训练。
http://blog.csdn.net/hx921123/article/details/56484876

货品目标检测样本制作方法

标签:voc   样本制作   目标检测   

原文地址:http://blog.51cto.com/yixianwei/2086358

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!