货品目标检测样本制作方法
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了货品目标检测样本制作方法相关的知识,希望对你有一定的参考价值。
最近公司要做无人超市项目,基本实现方式是通过摄像头检测货柜里面有多少个什么类别的货品,也就是目标检测算法。该方法所需数据样本为标记了位置的货品图片,如下所示。
为了制作该图片,设计方法如下:
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
以上是关于货品目标检测样本制作方法的主要内容,如果未能解决你的问题,请参考以下文章