今天是持续写作的第 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()

效果如下:

如果将 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()

其他函数

使用 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()

英文明显是没有问题的。

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

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

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

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

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

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

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

OpenCV 尾声

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

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

想学 Python 爬虫,可以订阅橡皮擦专栏哦~

python为图像设置标记_Python OpenCV 图像标记,取经之旅第 12 天相关推荐

  1. python实现浮雕效果的原理_python+opencv+图像特效(图像灰度处理、颜色翻转、图片融合,边缘检测,浮雕效果,颜色映射)...

    原图 图像灰度处理 #方式1 import cv2 #读取彩色原图 img0=cv2.imread('E:/python_cv/01.jpg',1) #读取灰度图 img1=cv2.imread('E ...

  2. java图像风格迁移_Python+OpenCV 图像风格迁移(模仿名画)

    现在很多人都喜欢拍照(自拍).有限的滤镜和装饰玩多了也会腻,所以就有 APP 提供了模仿名画风格的功能,比如 prisma.versa 等,可以把你的照片变成 梵高.毕加索.蒙克 等大师的风格. 这种 ...

  3. python打出由边框包围的_python opencv 图像边框(填充)添加及图像混合的实现方法(末尾实现类似幻灯片渐变的效果)...

    图像边框的实现 图像边框设计的主要函数 cv.copyMakeBorder()--实现边框填充 主要参数如下: 参数一:源图像--如:读取的img 参数二--参数五分别是:上下左右边的宽度--单位:像 ...

  4. python皮同_Python OpenCV 图像的双线性插值算法,全网最细致的算法说明_橡皮擦,一个逗趣的互联网高级网虫-CSDN博客...

    原文作者:梦想橡皮擦 原文标题:Python OpenCV 图像的双线性插值算法,全网最细致的算法说明 发布时间:2021-02-17 20:55:32 Python OpenCV 365 天学习计划 ...

  5. python 读取图片成为一维数组_python+opencv 图像的数组和矩阵操作

    在调用opencv的imread函数读取图像时,我们得到的其实是一个类型为numpy.ndarray的n维数组.这个数组的维度是[height,width,3],它是由每个像素的RGB通道的灰度值组成 ...

  6. python图像融合算法_Python OpenCV 实现图像融合

    原标题:Python OpenCV 实现图像融合 来自:https://www.linuxmi.com/python-opencv-image-blending.html 在本文中,我们将讨论Pyth ...

  7. pythonopencv图像形态_python+opencv图像形态学处理详细解释(膨胀、腐蚀、开闭运算、礼帽和黑猫)...

    python+opencv图像形态学处理 本篇博客主要是关于形态学中的腐蚀.膨胀.开运算.闭运算.礼帽和黑帽的函数用法. 内容会比较,为方便查阅.代码的解释会写在代码中. 用于测试的图像原图: 一.腐 ...

  8. 利用python对图像进行傅里叶变换_python实现图像傅里叶变换

    创作不易,如果对您有所帮助,请帮忙点赞,感谢! 一. 傅里叶变换简介: 在数字图像处理中,有两个经典的变换被广泛使用--傅里叶变换和霍夫变换.傅里叶变换是将时间域上的信号转变为频率域上的信号,进而进行 ...

  9. python图像分割动态域值_python+opencv阈值分割

    37 #获取像素点的最大值和最小值 38 arr_temp =np.reshape(img_arr,(lens,))39 max_val =max(arr_temp)40 min_val =min(a ...

  10. python亲密度_Python OpenCV 图像2D直方图,取经之旅第 25 天

    Python OpenCV 365 天学习计划,与橡皮擦一起进入图像领域吧. 基础知识铺垫 在之前的博客中,我们获取图像直方图的方式都是获取一维直方图,简单说就是只获取一个通道的特征,例如灰度,B 通 ...

最新文章

  1. 2018-2019-2 20165315《网络攻防技术》Exp6 信息搜集与漏洞扫描
  2. django 完整日志配置
  3. linux 中ans 用法,JSON简介以及用法汇总
  4. MONTH_NAMES_GET
  5. openssl工具调试ssl加密ftp
  6. js大屏导出图片_整理了30个实用可视化大屏模板,附源文件+工具
  7. python分布式存储文件_python如何分布式存储文件的方法
  8. oracle 只导出指定的表格,expdp带条件导出单个表的数据
  9. python和什么一起学_java和python可以一起学吗
  10. Black Hat | PE Tree:BlackBerry 发布PE文件开源逆向工具
  11. csv解析java_Java CSV解析器
  12. LinkedIn首席数据科学家谈数据分析
  13. 三年两转型 打造大宗商品交易大数据生态圈
  14. CF417D Cunning Gena
  15. GitHub上Java捕鱼达人源码分析(fishlord)
  16. angular : 自定义组件双向绑定 [(ngModel)]
  17. Armijo-Goldstein准则与Wolfe-Powell准则
  18. 股价被爆炒市值依旧不高,宝盛集团和同行们还要迈过两座大山
  19. mysql中返回上级_MySql 获取当前节点及递归所有上级节点
  20. SVM支持向量机的推导(非常详细)

热门文章

  1. 如何爬取B站视频的封面图片
  2. 毕业论文怎么降重?有什么技巧么?
  3. [软件工程] 总体设计(概要设计或初步设计)
  4. ue4 计算向量夹角
  5. 天龙八部科举答题问题和答案(全3/8)
  6. Shiro 实现记住我功能
  7. 阿里面试题:设计相关的系统对外提供商品实时价格获取功能
  8. 软件测试方法_边界值分析法
  9. Python爬虫(三):python抓取网页中的图片到本地
  10. Windows 错误代码