获取图片的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

opencv之获取图片的width和height以及矩形框标注相关推荐

  1. 解决在onCreate()过程中获取View的width和Height为0的4种方法

    此博客为转载,原文请看这位老铁的文章: https://www.cnblogs.com/kissazi2/p/4133927.html 很经常当我们动态创建某些View时,需要通过获取他们的width ...

  2. 如何解决在onCreate()中获取View的width和Height为0?

    当我们动态创建某些View时,需要通过获取他们的width和height来确定别的view的布局,但是在onCreate()获取view的width和height会得到0. view.getWidth ...

  3. android中oncreate方法,Android解决在onCreate()中获取View的width、Height为0的方法

    前言 在activity中,经常需要获取view的width和height,但是在onCreate()获取view的width和height会得到0.view.getWidth()和view.getH ...

  4. opencv,获取图片

    1.no module cv2 2.图片获取到,但不能正常显示,灰色背景 路径加'\',转义符

  5. LODOP.ADD.PRINT_IMAGE()打印图片设置width和height不起作用?

    最近在使用LODOP插件做打印需求,其中要打印(BASE64)图片,但是按照文档设置宽高,发现打印出来的图片大小没发生变化,经过一番研究发现,少设置了一个属性的锅 LODOP.SET_PRINT_ST ...

  6. 使用OpenCV合成训练图片,同时生成labelme兼容格式的标注文件

    思路很简单,加载背景图片,加载目标图片,随机抽取N个目标图像,将目标图像的像素copy到背景图片上,拷贝的位置可根据要求指定:同时合成标注json文件.代码如下: # coding=utf-8from ...

  7. opencv python3 找图片色块_OpenCV中色块的检测与标注

    我在Jupyter笔记本上工作.首先下载您的图像:!wget https://i.stack.imgur.com/SJxo3.png 然后从您的pic创建一个RGBA数组: ^{pr2}$ 我们希望在 ...

  8. Python tkinter 打开本地图片进行矩形框标注

    经常会遇到json报文中有图片URL,以及ROI的坐标x.y.w.h,然后需要验证下这个框在图片的什么位置,一般时候只能根据坐标值定性目测下.最近用tkinter写了个打开本地图片并且将rect的坐标 ...

  9. 如何在Python中获取图片分辨率?——Python实现获取图片分辨率的代码及详解。

    如何在Python中获取图片分辨率?--Python实现获取图片分辨率的代码及详解. 在进行图片处理或者图片分析的时候,获取图片的分辨率信息是必不可少的.Python提供了许多库可以方便地获取图片的分 ...

最新文章

  1. Codeforces 724 G Xor-matic Number of the Graph 线性基+DFS
  2. SNS-HDR Pro(HDR技术图像处理)中文版
  3. Ubuntu: 为firefox安装flash插件
  4. Git与Repo入门
  5. 成功解决You are using pip version 9.0.1, however version 9.0.3 is available. You should consider upgra
  6. 2656: [Zjoi2012]数列(sequence)(递归+高精度)
  7. .NET 和 Mono 的一点历史
  8. Java对象的引用类型
  9. 机器学习者都应该知道的五种损失函数!
  10. [转]Python3之max key参数学习记录
  11. 《面向模式的软件体系结构1--模式系统》读书笔记(7)--- 通信
  12. AWVS12-Windows
  13. win10计算机拨号连接,拨号连接设置(Win10怎么设置宽带自动连接 win10开机自动连接宽带设置方法详解)...
  14. 欧氏空间距离和内积_欧氏空间的内积与线性变换
  15. Kubernetes学习-K8S安装篇-Kubeadm安装高可用K8S集群
  16. win10 电脑自带的便签在哪里
  17. Auto.js Pro安卓免ROOT引流脚本开发系列教程28网易公开课(6)-取随机话术
  18. java周总结1113_流总结_序列化_xml_html
  19. 事件冒泡详解及阻止事件冒泡
  20. 陈菜根谈“为什么子弹短信会火?”

热门文章

  1. 预告丨《政务大数据平台数据安全体系建设指南》发布会
  2. 课程设计 英语学习助手
  3. GPS 校验和 代码_每天学习一点点~每天学习一点点~安全阀安全技术监察规程 安全阀校验与修理...
  4. 2022年多益网络秋招笔试
  5. BTS-LovelyFonts
  6. 智云通CRM:客户拜访与时间管理,你做好了吗?
  7. BIOS-CXL CxlIpLib 源码解析
  8. 三角函数总结(高数预备知识、博主[亦可呀]原创文章的整理)
  9. vue3使用canvas画动态虚线和普通虚线
  10. Android kotlin 将Base64字符串转换成Bitmap,并在jetpack compose的Image控件中显示