热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python为图像设置标记_PythonOpenCV图像标记,取经之旅第12天

今天是持续写作的第46100天。如果你有想要交流的想法、技术,欢迎在评论区留言。本篇博客目的:如何使用OpenCV在图片是添加一些图形,使

今天是持续写作的第 46 / 100 天。

如果你有想要交流的想法、技术,欢迎在评论区留言。

本篇博客目的:如何使用 OpenCV 在图片是添加一些图形,使用到的函数是 cv2.rectangle 和 cv2.circle。

cv2.rectangle

该函数的作用就是在图片上绘制一个简单的矩形,语法格式如下:

cv2.rectangle(img, pt1, pt2, color[, thickness[, lineType[, shift]]])

该函数无返回值。

参数说明如下:

img : 待绘制矩形的图片;

pt1:矩形的起始坐标,使用元组表示,即(X 坐标,Y 坐标);

pt2:矩形的结束坐标,使用元组表示,同上;

color:要绘制矩形的边界线颜色,如果是 BGR 格式,那(255,0,0)为蓝色;

thinkness:矩形边界线的粗细像素,如果使用 -1 ,将填充整个矩形;

lineType 与 shift 参数,暂时用不上。

接下来在图片上标记一个红色矩形吧。

import cv2 as cv

import matplotlib.pyplot as plt

img = cv.imread('12.jpg', -1)

img = cv.cvtColor(img, cv.COLOR_BGR2RGB)

cv.rectangle(img, (90, 30), (280, 230), (255,0,0), 2)

plt.imshow(img)

plt.show()

效果如下:

ca78ef31ffba5168cac5794ed18d48d0.png

如果将 thinkness 设置为 -1,会显示成一个红色的矩形。

cv.rectangle(img, (90, 30), (280, 230), (255,0,0), -1)

cv2.circle

看名字就知道这是用来画圆的函数了,语法格式如下:

cv2.circle(img, center_coordinates, radius, color, thickness)

参数说明:

img:待绘制圆的图像;

center_coordinates:圆的中心坐标。使用元组表示,即(X 坐标值,Y 坐标值);

radius:圆的半径;

color:待绘制圆的边界线的颜色。对于 BGR,使用元组表示,例如:(255,0,0)为蓝色;

thickness:它是圆边界线的粗细像素。厚度-1 像素将以指定的颜色填充矩形。

测试代码如下:

cv.circle(img, (60, 60), 50, (0, 200, 230), 2)

plt.imshow(img)

plt.show()

41b81404a3c37f88ca19881a52470484.png

其他函数

使用 OpenCV 在图像上进行标记,还有其他函数,例如 cv2.line() 画线,cv2.ellipse() 画椭圆,cv2.putText() 文字绘制。

看到这里,本能的就注意到文字绘制了,因为这里面经常会出现的一个大坑是中文乱码的问题,

接下来,就实际的尝试一下。

先看一下该函数的语法格式:

cv2.putText(img, text, org, font, fontScale, color[, thickness[, lineType[, bottomLeftOrigin]]])

其中各参数说明如下:

img:待绘制文本的图像。

text:待绘制的文本字符串。

org:图像中文本字符串左下角的坐标。使用元组表示,即(X 坐标值,Y 坐标值)

font:字体类型,一些字体类型是 FONT_HERSHEY_SIMPLEX,FONT_HERSHEY_PLAIN

fontScale:字体比例因子乘以 font-specific 基本大小

color:待绘制的文本字符串的颜色。对于 BGR,使用一个元组表示。例如:(255,0,0)为蓝色。

thickness:它是线的粗细像素。

lineType:可选参数,它给出了要使用的行的类型。

bottomLeftOrigin:可选参数。如果为 true,则图像数据原点位于左下角。否则,它位于左上角。

先使用英文尝试一波。

import cv2 as cv

import matplotlib.pyplot as plt

img = cv.imread('12.jpg', -1)

img = cv.cvtColor(img, cv.COLOR_BGR2RGB)

cv.rectangle(img, (90, 30), (280, 230), (255, 0, 0), 2)

cv.circle(img, (60, 60), 50, (0, 200, 230), 2)

# 绘制文字

cv.putText(img, 'OpenCV', (250, 250), cv.FONT_HERSHEY_SIMPLEX,

1, (0, 190, 150), 2)

plt.imshow(img)

plt.show()

英文明显是没有问题的。

0ab3703cbe1b0adf812c81fcf679822d.png

修改成中文,查看内容是否正常输出。

cv.putText(img, '梦想橡皮擦', (100, 350), cv.fon, 1, (0, 190, 150), 2)

果然如橡皮擦所料,中文乱码。

75e8313cd6e4492cfb6913331387ea8a.png

对于这部分,经过检索学习时候,发现解决办法比较固定,阅读下面的文章即可。

https://blog.csdn.net/ctwy291314/article/details/91492048

除了这种办法以外,还有一种,也可以尝试下。

python+opencv+freetype(支持 py2,py3)

OpenCV 尾声

1 个小时又过去了,对 Python OpenCV 相关的知识点,你掌握了吗?

空闲之余,可以订阅橡皮擦的爬虫百例课程学习爬虫知识。

想学 Python 爬虫,可以订阅橡皮擦专栏哦~ 🈲🈲🈲🈲 点击发现惊喜 🈲🈲🈲🈲

本文同步分享在 博客“梦想橡皮擦”(CSDN)。

如有侵权,请联系 support@oschina.cn 删除。

本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。



推荐阅读
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了logistic回归(线性和非线性)相关的知识,包括线性logistic回归的代码和数据集的分布情况。希望对你有一定的参考价值。 ... [详细]
  • 基于PgpoolII的PostgreSQL集群安装与配置教程
    本文介绍了基于PgpoolII的PostgreSQL集群的安装与配置教程。Pgpool-II是一个位于PostgreSQL服务器和PostgreSQL数据库客户端之间的中间件,提供了连接池、复制、负载均衡、缓存、看门狗、限制链接等功能,可以用于搭建高可用的PostgreSQL集群。文章详细介绍了通过yum安装Pgpool-II的步骤,并提供了相关的官方参考地址。 ... [详细]
  • 生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 本文讨论了在Windows 8上安装gvim中插件时出现的错误加载问题。作者将EasyMotion插件放在了正确的位置,但加载时却出现了错误。作者提供了下载链接和之前放置插件的位置,并列出了出现的错误信息。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
  • 拥抱Android Design Support Library新变化(导航视图、悬浮ActionBar)
    转载请注明明桑AndroidAndroid5.0Loollipop作为Android最重要的版本之一,为我们带来了全新的界面风格和设计语言。看起来很受欢迎࿰ ... [详细]
  • 本文介绍了一个在线急等问题解决方法,即如何统计数据库中某个字段下的所有数据,并将结果显示在文本框里。作者提到了自己是一个菜鸟,希望能够得到帮助。作者使用的是ACCESS数据库,并且给出了一个例子,希望得到的结果是560。作者还提到自己已经尝试了使用"select sum(字段2) from 表名"的语句,得到的结果是650,但不知道如何得到560。希望能够得到解决方案。 ... [详细]
  • Html5-Canvas实现简易的抽奖转盘效果
    本文介绍了如何使用Html5和Canvas标签来实现简易的抽奖转盘效果,同时使用了jQueryRotate.js旋转插件。文章中给出了主要的html和css代码,并展示了实现的基本效果。 ... [详细]
  • 本文介绍了5个基本Linux命令行工具的现代化替代品,包括du、top和ncdu。这些替代品在功能上进行了改进,提高了可用性,并且适用于现代化系统。其中,ncdu是du的替代品,它提供了与du类似的结果,但在一个基于curses的交互式界面中,重点关注占用磁盘空间较多的目录。 ... [详细]
  • Annotation的大材小用
    为什么80%的码农都做不了架构师?最近在开发一些通用的excel数据导入的功能,由于涉及到导入的模块很多,所以开发了一个比较通用的e ... [详细]
author-avatar
plz乐呵呵
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有