opencv库图像基础4绘图-python

1.绘画线条和简单图形

创建颜色字典和一个画布

import cv2
import numpy as np
import matplotlib.pyplot as plt
# 颜色
colors={
'blue':(255,0,0),
'green':(0,255,0),
'red':(0,0,255),
'yellow':(0,255,255),
'white':(255,255,255),
'black':(0,0,0),
'rand': np.random.randint(0,high=256,size=(3,)).tolist()
}
# 显示图像
def show_img(img,title):
img_RGB = img[:,:,::-1]#BGR to RGB
plt.title(title)
plt.imshow(img_RGB)
plt.show() # 创建画布
def bg():
canvas = np.zeros((400,400,3),np.uint8)
canvas[:]=colors['white']
show_img(canvas,'background')
return canvas

画直线

# 画直线
def line(canvas):
cv2.line(canvas,(0,0) ,(400,400),colors['green'],5)
cv2.line(canvas,(0,400) ,(400,0),colors['black'],5)
show_img(canvas,"cv2.line")

画长方形

#画矩形
def rectangle(canvas):
cv2.rectangle(canvas,(10,50),(70,120),colors['green'],3 )
cv2.rectangle(canvas,(150,50),(170,120),colors['black'],-1) #填写-1表示填充
show_img(canvas,"cv2.rectangle")

画圆形


def circle(canvas):
cv2.circle(canvas,(200,200),150,colors['green'],3 )
cv2.circle(canvas,(200,200),50,colors['black'],-1 ) #填写-1表示填充
show_img(canvas,"cv2.rectangle")

画折线

def polyline(canvas):
pts = np.array( [[250,5] ,[220,80],[280,80]],np.int32 )
pts=pts.reshape( (-1,1,2) )
cv2.polylines(canvas, [pts],True,colors['blue'],3 ) #True表示线封闭
pts = np.array( [[150,205] ,[90,130],[230,60]],np.int32 )
pts=pts.reshape( (-1,1,2) )
cv2.polylines(canvas, [pts],False,colors['rand'],3 ) #True表示线封闭
show_img(canvas,"cv2.polylines")

2.在画板中添加文字

添加文字

def putText(canvas):
# 背景图片 添加的文字 位置 字体 字体大小 字体颜色 字体粗细
cv2.putText(canvas,"hello",(100,200) , cv2.FONT_HERSHEY_SIMPLEX,0.9,colors['blue'],2)
show_img(canvas,"cv2.putText")

输出

函数原型

cv2.putText(img, text, org, fontFace, fontScale, color, thickness=None, lineType=None, bottomLeftOrigin=None)

参数介绍:

img:需要绘制文本的图像;

text:要绘制的文本内容;

org:表示要绘制的位置,图像中文本字符串的左下角;可以用一个元祖来表示x、y坐标,例如(10, 100)表示x=10,y=100。

fontFace:字体类型,如cv2.FONT_HERSHEY_SIMPLEX、cv2.FONT_HERSHEY_PLAIN等;对应的字体类型如下:

 cv2.FONT_ITALIC:斜体字的标志
cv2.FONT_HERSHEY_PLAIN:小尺寸无衬线字体
cv2.FONT_HERSHEY_SIMPLEX:正常大小的无衬线字体
cv2.FONT_HERSHEY_DUPLEX:正常大小的无衬线字体(比FONT_HERSHEY_SIMPLEX更复杂)
cv2.FONT_HERSHEY_COMPLEX:正常大小的衬线字体
cv2.FONT_HERSHEY_TRIPLEX:正常大小的衬线字体(比FONT_HERSHEY_COMPLEX更复杂)
cv2.FONT_HERSHEY_SCRIPT_SIMPLEX:手写体字体
cv2.FONT_HERSHEY_SCRIPT_COMPLEX(比FONT_HERSHEY_SCRIPT_SIMPLEX的更复杂)

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

color:文本字体颜色,设置三通道的元组BGR,比如(255,0,0)

hickness:字体粗细,默认为1;

lineType:线条类型,默认为cv2.LINE_AA;

bottomLeftOrigin:坐标原点,如果为真,则图像数据原点位于左下角,否则它在左上角;

其中,org定义了文本起始位置,可以用一个元祖来表示x、y坐标,例如(10, 100)表示x=10,y=100。

opencv库图像基础4绘图-python的更多相关文章

  1. opencv基础教程 之 图像基础和绘图

    1,教程:感谢小强 2,用argparse传参数来显示一张图片 #!/usr/bin/python #linux系统 #coding=utf-8 import cv2 import argparse ...

  2. 实战深度学习(上)OpenCV库

    在如今人工智能的浪潮下,无数模拟机器学习和深度学习的开发者工具倍出,其中在计算机图形学和计算机视觉里面最流行的一个库就是OpenCV库了.计算机图形学和计算机视觉学在我们的自动驾驶和仿生机器人当中有着 ...

  3. python之opencv库

    关于OpenCV简介  OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux.Windows.Android和Mac OS操作系统上.它轻量级而且高效--由一系列 C ...

  4. 使用Python+OpenCV进行图像模板匹配(Match Template)

    2017年9月22日 BY 蓝鲸 LEAVE A COMMENT 本篇文章介绍使用Python和OpenCV对图像进行模板匹配和识别.模板匹配是在图像中寻找和识别模板的一种简单的方法.以下是具体的步骤 ...

  5. python基础系列教程——Python库的安装与卸载

    python基础系列教程——Python库的安装与卸载 2.1 Python库的安装 window下python2.python3安装包的方法 2.1.1在线安装 安装好python.设置好环境变量后 ...

  6. 小白学 Python 爬虫(32):异步请求库 AIOHTTP 基础入门

    人生苦短,我用 Python 前文传送门: 小白学 Python 爬虫(1):开篇 小白学 Python 爬虫(2):前置准备(一)基本类库的安装 小白学 Python 爬虫(3):前置准备(二)Li ...

  7. Python如何安装OpenCV库

    转载:https://blog.csdn.net/weixin_35684521/article/details/81953047 OpenCV的概念可百度,在此不再赘述.https://baike. ...

  8. Python的Opencv库怎么装

    原文章写于时间2019.4 当时鼓捣Opencv库弄了好长时间,前前后后弄了五天,找了好多帖子不知道删除重装了多少次,现在把我试出来正确的方法给大家分享一下. 1.Pycharm 我用的是win10系 ...

  9. python安装opencv库

    1.打开anaconda prompt(安装anaconda会默认安装),键入 pip install opencv-python,如下: 2.安装过程如下所示: 3 测试是否安装成功 上述就说明安装 ...

  10. opencv+opencv_contrib 人脸识别和检测 python开发环境快速搭建(30分钟)图文教程

    很多朋友为了学习python.ML(机器学习).DL(深度学习).opencv等花费了大量时间配置安装环境(一个朋友花了4天时间才配置好)各种搜索.下载.安装配置,出问题等. 市面上的配置资料很多,选 ...

随机推荐

  1. vulnhub靶场渗透学习

    攻击机:192.168.100.251 目标机:192.168.100.17 netdiscover netdiscover -r 192.168.100.1/24 Currently scannin ...

  2. go中异常处理流程

    在 Go 语言中,panic.recover 和 defer 是用于处理异常情况的关键字.它们通常一起使用来实现对程序错误的处理和恢复. 1. defer 语句 defer 用于在函数返回之前执行一段 ...

  3. 遥感图像处理笔记之【Machine Learning CS-433 - Class Project 2 - Road Segmentation - EPFL】

    遥感图像处理学习(8) 前言 遥感系列第8篇.遥感图像处理方向的学习者可以参考或者复刻 本文初编辑于2024年1月2日 本文再编辑于2024年1月4日:附作者改进U-Net网络图片:文字补充说明 20 ...

  4. 教你用CSS实现表单部件

    案例介绍 欢迎来到我的小院,我是霍大侠,恭喜你今天又要进步一点点了!我们来用CSS编程实战案例,使用 列表标签完成一个下拉菜单样式的表单部件. 案例演示 运行代码后在浏览器弹出由 标签组成的下拉菜单样 ...

  5. Oracle私网mtu滚动修改实施方案

    之前测试遇到过mtu修改不能滚动的情况,目前在自己测试环境重新反复验证发现正常是可以滚动的,下面梳理下整个实施方案: 环境:RHEL6 + Oracle 11.2.0.4 RAC(2 nodes) / ...

  6. 在Java中,对 byte 和 short 类型 进行位操作的时候,严重留意事项

    总结:在java中,对byte和short类型的 右移操作 必须先进行 & 0xff 后再右移,避免byte或short是负数的情况下,导致 右移操作前 自动升为int,前面补了很多1,此时右 ...

  7. CF1842

    A 比两边和的大小即可. B 显然如果一个数拥有的所有二进制位的 \(1\) 被包含在 \(x\) 中,选了一定不会导致不能变成 \(x\):如果有一个 \(1\),\(x\) 对应的位上是 \(0\ ...

  8. HGAME 2024 WEEK2 Crypto Misc

    CRYPTO midRSA 题目描述:兔兔梦到自己变成了帕鲁被crumbling抓去打黑工,醒来后连夜偷走了部分flag from Crypto.Util.number import * from s ...

  9. CF1010C Border 题解

    题目传送门 前置知识 最大公约数 | 裴蜀定理 简化题意 给定一个长度为 \(n\) 的序列 \(a\),求 \((\sum\limits_{i=1}^{n}d_ia_i) \bmod k\) 一共会 ...

  10. JS Leetcode 690. 员工的重要性 题解分析

    壹 ❀ 引 本题来自LeetCode690. 员工的重要性,难度简单,题目描述如下: 给定一个保存员工信息的数据结构,它包含了员工 唯一的 id ,重要度 和 直系下属的 id . 比如,员工 1 是 ...