IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> opencv之获取图片的width和height以及矩形框标注 -> 正文阅读

[人工智能]opencv之获取图片的width和height以及矩形框标注

获取图片的width和height

imread函数读取一张图片时,其返回值为一个矩阵,矩阵的行数代表height,矩阵的列数代表width,不要搞混,也就是shape[0]代表height,shape[1]代表width

import cv2
img = cv2.imread(fname)
width = img.shape[1]
height = img.shape[0]

矩形框标注

在这里插入图片描述

下面解释一下,这个地方img就是读取的图像,pt1表示矩形框的左上角的点,pt2时矩形框的右下角的点,以(x,y)这种点的形式来表示。color参数表示矩形框的颜色设置,thickness参数表示矩形框线条的粗细。

如果你的bbox是归一化后的[x_center, y_center, width, height]下面提供了转换为[x_min, y_min],[x_max, y_max]的代码。

img = cv2.imread(fname)
width = img.shape[1]
height = img.shape[0]
# 其中的bbox对应的内容
bbox = {'x': x, 'y':y, 'width':width, 'height':height}

wid = int(float(bbox['width']) * width)
hei = int(float(bbox['height']) * height)
x = int(float(bbox['x']) * width - wid / 2)
y = int(float(bbox['y']) * height - hei / 2)
# print(x, y, x + wid, y + hei)
cv2.rectangle(img, (x, y), (x + wid, y + hei), (0, 255, 0), 1)

标注好之后,可以保存一下带标注框的图片:

cv2.imwrite('001.jpg', img)

应用

下面针对某个场景,这个场景对应的是:将coco数据集中的某个图片的标注信息进行显示,其中标注信息我解析到txt文件中了,每行表示:类别id, bbox[x_center, y_center, width, height ]。其中bbox内容进行了归一化。我要做的是将.txt中的标注信息以矩形框的形式添加到图片上,然后保存添加矩形框的图片。

.txt文件中的内容如下:

2 0.767109 0.472167 0.076906 0.082125
2 0.871102 0.460646 0.081266 0.084792
2 0.701187 0.315125 0.172812 0.060583
2 0.767820 0.760073 0.094109 0.080563
2 0.530031 0.756875 0.084094 0.086500
2 0.683602 0.759635 0.086109 0.079729
2 0.163766 0.679760 0.053438 0.061771
2 0.299398 0.559937 0.058234 0.065292
2 0.466242 0.713615 0.048766 0.068312
2 0.625523 0.748135 0.103172 0.102813
2 0.164477 0.749219 0.079766 0.085812
2 0.551383 0.721135 0.056578 0.066146
2 0.931406 0.447979 0.072906 0.068042
2 0.346875 0.760417 0.287500 0.079167

图片内容:
在这里插入图片描述

提供我的一份代码:

def test_true(img_name, ant_name):
    # 验证解析是否正确
    # img_name = 'data/val2017/000000001532.jpg' 图片路径
    # ant_name = 'data/labels/val/000000001532.txt' 。txt文件路径
    img = cv2.imread(img_name)
    width = img.shape[1]
    height = img.shape[0]
    print(width, height)
    with open(ant_name, 'r') as f:
        for line in f.readlines():
            line = line.strip()
            a = line.split(' ')
            print(a)
            wid = int(float(a[3]) * width)
            hei = int(float(a[4]) * height)
            x = int(float(a[1]) * width - wid / 2)
            y = int(float(a[2]) * height - hei / 2)
            # print(x, y, x + wid, y + hei)
            cv2.rectangle(img, (x, y), (x + wid, y + hei), (0, 255, 0), 1)

    # cv2.putText(img, fname, ())
    cv2.imwrite('001.jpg', img)  # 将图片保存为001.jpg

最终的结果
在这里插入图片描述

参考:

https://docs.opencv.org/4.x/d6/d6e/group__imgproc__draw.html#ga07d2f74cadcf8e305e810ce8eed13bc9

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-11-18 11:11:49  更:2021-11-18 11:14:06 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 4:17:14-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码