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

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

以上是关于货品目标检测样本制作方法的主要内容,如果未能解决你的问题,请参考以下文章

LVC | 一种简单的小样本目标检测方法

LVC | 一种简单的小样本目标检测方法

实操教程|怎样制作目标检测的训练样本图像?

实操教程|怎样制作目标检测的训练样本图像?

一种关注于重要样本的目标检测方法!

Sylph | 一种用于增量小样本目标检测的超网络框架