目前在学习机械臂抓取,需要yolo预测图的坐标信息,参考诸位大佬的代码实现了在预测图中显示中心点坐标和打印坐标信息
一、添加打印坐标信息代码
首先在detect.py中的找到box_label函数,进入该函数
添加该部分代码
代码我放在后面了
运行detect.py结果如下所示
二、预测图上显示中心点坐标
为了能让预测图也显示中心坐标,添加下列代码
全部代码
# ---------------------------------------------------------------------------------------------------#
# 在预测图中绘制一个中心坐标红点
cv2.circle(self.im,((p1[0] + p2[0])//2, (p1[1] + p2[1])//2), self.lw,(0, 0, 255), self.lw)
# 创建了个中心点坐标变量
Center = ( ((p2[0] - p1[0]) / 2 +p1[0]) , ((p2[1] - p1[1]) / 2 + p1[1]) )
cv2.putText(self.im, str(Center), ((p1[0] + p2[0])//2, (p1[1] + p2[1])//2), 0, self.lw / 3,txt_color,
thickness=4, lineType=cv2.LINE_AA)
# 打印坐标信息
print("左上点的坐标为:(" + str(p1[0]) + "," + str(p1[1]) + "),右上点的坐标为(" + str(p2[0]) + "," + str(
p1[1]) + ")")
print("左下点的坐标为:(" + str(p1[0]) + "," + str(p2[1]) + "),右下点的坐标为(" + str(p2[0]) + "," + str(
p2[1]) + ")")
print("中心点的坐标为:(" + str((p2[0] - p1[0]) / 2 +p1[0]) + "," + str((p2[1] - p1[1]) / 2 + p1[1]) + ")")
# ---------------------------------------------------------------------------------------------------#
运行后的结果是这样的
这里我要提一嘴cv2.putText函数的用法,因为刚开始的时候我传入center到里边报错,然后特地查了该函数的用法,如果感兴趣你可以去搜一搜相关博客
putText(img, text, org, fontFace, fontScale, color, thickness=None, lineType=None, bottomLeftOrigin=None)
参数解释
img: 图片
text: 要显示的文本字符串
org: 字符串框左上角点的位置
fontFace: 字体类型
fontScale: 字体大小
color: 字体颜色
thickness: 字体粗细
题外话:上边预测图中存在标签和置信度看起来并不好看,可以搜一搜隐藏标签和置信度的博客,有很多,这里我就懒得去找了