hjw_hjwkk 2022-08-02 18:41 采纳率: 100%
浏览 139
已结题

yolov5如何结合超绿法输出质心坐标

想将以下代码结合到yolov5-6.1中,并且显示出质心并输出质心坐标,应该如何改动。

import argparse
import imutils
import cv2
import numpy as np

# 构建命令行参数
# --image 要处理的图像路径
ap = argparse.ArgumentParser()
ap.add_argument("-i", default="E:/yolov5/yolov5-6.1/VOCdevkit/VOC2007/JPEGImages/Charlock429.png", required=False,
                help="path to the input image")
args = vars(ap.parse_args())

# 加载图像,转换成int型,不然会导致数据溢出
image = cv2.imread("E:/yolov5/yolov5-6.1/VOCdevkit/VOC2007/JPEGImages/Charlock429.png")
img1 = np.array(image, dtype='int')
# 超绿灰度图
b, g, r = cv2.split(img1)
# ExG_sub = cv2.subtract(2*g,r)
# ExG = cv2.subtract(ExG_sub,b )
ExG = 2 * g - r - b
[m, n] = ExG.shape

for i in range(m):
    for j in range(n):
        if ExG[i, j] < 0:
            ExG[i, j] = 0
        elif ExG[i, j] > 255:
            ExG[i, j] = 255

ExG = np.array(ExG, dtype='uint8')  # 重新转换成uint8类型
thresh = cv2.threshold(ExG, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)[1]

# 注意,在应用阈值化之后,形状是如何在黑色背景上表示为白色前景。
# 下一步是使用轮廓检测,找到这些白色区域的位置:
cnts = cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL,
                        cv2.CHAIN_APPROX_SIMPLE)
cnts = imutils.grab_contours(cnts)

# 遍历轮廓集
for c in cnts:
    # 计算轮廓区域的图像矩。 在计算机视觉和图像处理中,图像矩通常用于表征图像中对象的形状。这些力矩捕获了形状的基本统计特性,
    # 包括对象的面积,质心(即,对象的中心(x,y)坐标),方向以及其他所需的特性。
    M = cv2.moments(c)
    cX = int(M["m10"] / M["m00"])
    cY = int(M["m01"] / M["m00"])
    # 在图像上绘制轮廓及质心
    cv2.drawContours(image, [c], -1, (0, 255, 0), 2)
    cv2.circle(image, (cX, cY), 7, (255, 255, 255), -1)
    cv2.putText(image, "center", (cX - 20, cY - 20),
    cv2.FONT_HERSHEY_SIMPLEX, 0.5, (255, 255, 255), 2)
    # 展示图像
    cv2.imshow("Image", image)
    cv2.waitKey(0)

以下是上述代码生成的图像

img

  • 写回答

2条回答 默认 最新

  • 爱晚乏客游 2022-08-03 09:10
    关注

    你结合是要怎么个结合法?你的yolov5检测的什么东西?yolov5最后生成的是一个矩形框,你要把质心显示到矩形框上面去?

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 8月11日
  • 已采纳回答 8月3日
  • 创建了问题 8月2日

悬赏问题

  • ¥15 有没有能解决微信公众号,只能实时拍照,没有选择相册上传功能,我不懂任何技术,,有没有给我发个软件就能搞定的方法
  • ¥15 Pythontxt文本可视化
  • ¥15 如何基于Ryu环境下使用scapy包进行数据包构造
  • ¥15 springboot国际化
  • ¥15 搭建QEMU环境运行OP-TEE出现错误
  • ¥15 Minifilter文件保护
  • ¥15 有限元软件终止时间超过设定值
  • ¥15 onvif框架引用一直报错
  • ¥50 C#和C++混合编程,使用CLR托管,报错System.Runtime.InteropServices.SEHException
  • ¥30 .NET使用sqlite发布后报错