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. el-dialog组件无法跟新视图上的数据

    <el-dialog title="提示" :visible.sync="dialogVisible" width="30%"> ...

  2. ClickHouse(14)ClickHouse合并树MergeTree家族表引擎之VersionedCollapsingMergeTree详细解析

    目录 建表语法 使用场景 合并算法 使用例子. 资料分享 参考文章 VersionedCollapsingMergeTree引擎继承自MergeTree并将折叠行的逻辑添加到合并数据部分的算法中.Ve ...

  3. C/C++ 操作数组与指针笔记

    指针数组: #include <stdio.h> #include <stdlib.h> #include <string.h> void PrintInt() { ...

  4. MVC和WebAPI如何从Filter向Action中传递数据

    http://www.itfanr.cc/2016/04/17/transfer-data-from-filter-to-action/ MVC和WebAPI如何从Filter向Action中传递数据 ...

  5. Socket.D v2.3.9 发布(增加 node.js server 实现)

    Socket.D 是基于"事件"和"语义消息""流"的网络应用层传输协议.有用户说,"Socket.D 之于 Socket,尤如 ...

  6. 曝iPhone 15系列将于9月13日发布 9月22日发售:7大升级、或售5999元起

    按照往年惯例,新款iPhone将于9月中下旬(第三周)与大家见面.9to5Mac今日带来了新款iPhone的最新消息--iPhone 15系列将于9月13日发布,9月22日正式发售. 9to5Mac从 ...

  7. 基于Wireshark的ARP协议分析和IP报文、ICMP报文的分析|网络数据抓包|课程设计|traceroute|ping|

    前言 那么这里博主先安利一些干货满满的专栏了! 首先是博主的高质量博客的汇总,这个专栏里面的博客,都是博主最最用心写的一部分,干货满满,希望对大家有帮助. 高质量博客汇总https://blog.cs ...

  8. 在K8S中,集群可以做哪些优化?

    在Kubernetes(简称K8s)集群中,可以进行多种优化以提升性能.稳定性和资源利用率.以下是一些常见的优化措施: 控制面组件优化: kube-apiserver 高可用与扩展:通过配置多个API ...

  9. 问题:Duplicate报错RMAN-03009, ORA-17628, ORA-19505

    前面文章提到,这周末帮一个客户测试报错场景: 客户通过duplicate生产备库的方式创建cascade备库. 发现每次都会遇到两个文件报错,ORA-17628: Oracle error 19505 ...

  10. NC14402 求最大值

    题目链接 题目 题目描述 给出一个序列,你的任务是求每次操作之后序列中 (a[j]-a[i])/(j-i)[1<=i<j<=n]的最大值. 操作次数有Q次,每次操作需要将位子p处的数 ...