文章目录
前言
提示:这里可以添加本文要记录的大概内容:
有一个有意思的问题:大多数商店都出售香烟,各种香烟摆放在烟柜上,我们用眼睛能够很容易判断出香烟摆放的整不整齐,但是计算机该如何判断摆放的整齐与否?
提示:以下是本篇文章正文内容,下面案例可供参考
一、利用FLD直线检测算法(最终放弃传统图像处理)
首先利用LSD算法找出目标图片里所有的直线,再筛选出长度符合的直线(主要是去除烟盒上复杂的图案,只留下烟盒大概的轮廓)。
由于烟盒颜色,样式太过复杂,所得到的图片不能完整显示所有烟盒的轮廓,并且价格标签也会影响对烟盒轮廓的判断,想了很多办法但都没有太大作用,所以最终舍弃了这种办法。
二、使用目标检测(yolov5)算法计算整齐度
1.模型的训练
首先我从各种软件和浏览器上找到了大概20张拍的比较规范的烟柜图片,标记出了图片里摆放整齐的所有烟盒,训练后的模型基本可以检测出图片里所有规范的烟盒。
模型检测的烟盒:
2.在detect.py文件中将62行附近的save_txt打开,如图所示。这样就可以得到烟盒的坐标信息。
3.处理得到的.txt坐标文件
这里我在test.py文件中处理得到的坐标并计算整齐程度。
file = open('runs/detect/exp24/labels/p6.txt')
cig = 0.0
left_x = 10000
left_y = 10000
right_x = 0
right_y = 0
average = 0
count = 0
row1 = 0
row2 = 0
up = 0
arr = []
arr2 = [1, 1, 1, 1, 1, 1, 1, 1