python使用opencv模块画简单的图形
opencv模块提供了画图函数接口,这些函数接口可以很方便的绘制简单地图形。
cv2.line():绘制线段函数
cv2.circle():绘制圆
cv2.rectangle():绘制矩形
cv2.ellipse():
cv2.putText():
首先我们先画最简单的线段,代码如下:
import numpy as np
import cv2
from matplotlib import pyplot as plt
img = np.zeros((512, 512, 3), np.uint8)cv2.line(img,(0,0), (512, 512),(255, 0, 0), 5)cv2.imwrite('line.jpg', img)
img1 = cv2.imread('line.jpg', cv2.IMREAD_ANYCOLOR)
b,g,r = cv2.split(img1)
img1 = cv2.merge([r, g, b])
plt.imshow(img1, cmap = 'gray', interpolation = 'bicubic')
plt.xticks([])
plt.yticks([])
这段代码运行结果就是从左上到右下的一段蓝线,效果如下:
为了更好的展示line函数接口的参数含义,特写如下代码:
import numpy as np
import cv2
from matplotlib import pyplot as plt
img1 = np.zeros((512, 512, 3), np.uint8)
img2 = np.zeros((512, 512, 3), np.uint8)
img3 = np.zeros((512, 512, 3), np.uint8)
cv2.line(img1,(0,0), (511, 511),(255, 0, 0), 5)cv2.imwrite('line1.jpg', img1)
img1 = cv2.imread('line1.jpg', cv2.IMREAD_ANYCOLOR)
b,g,r = cv2.split(img1)
img1 = cv2.merge([r, g, b])cv2.line(img2,(0,0), (254, 254),(0, 255, 0), 5)cv2.imwrite('line2.jpg', img2)
img2 = cv2.imread('line2.jpg', cv2.IMREAD_ANYCOLOR)
b,g,r = cv2.split(img2)
img2 = cv2.merge([r, g, b])cv2.line(img3,(255,255), (511, 511),(0, 0, 255), 5)cv2.imwrite('line3.jpg', img3)
img3 = cv2.imread('line3.jpg', cv2.IMREAD_ANYCOLOR)
b,g,r = cv2.split(img3)
img3 = cv2.merge([r, g, b])plt.subplot(131)
plt.imshow(img1, cmap = 'gray', interpolation = 'bicubic')
plt.xticks([])
plt.yticks([])
plt.subplot(132)
plt.imshow(img2, cmap = 'gray', interpolation = 'bicubic')
plt.xticks([])
plt.yticks([])
plt.subplot(133)
plt.imshow(img3, cmap = 'gray', interpolation = 'bicubic')
plt.xticks([])
plt.yticks([])
运行结果为:
由此可以清晰的明白了line函数接口的用法和参数意义。
矩形是由四条线段组成的,因此矩形完全可以使用line函数画出,opencv模块单独提供了矩形绘制接口cv2.rectangle()。
代码如下:
import numpy as np
import cv2
from matplotlib import pyplot as pltimg1 = np.zeros((1024, 1024, 3), np.uint8)cv2.rectangle(img1,(255,255), (767, 767),(255, 0, 0), 5)cv2.imwrite('rectangle.jpg', img1)
img1 = cv2.imread('rectangle.jpg', cv2.IMREAD_ANYCOLOR)
b,g,r = cv2.split(img1)
img1 = cv2.merge([r, g, b])plt.imshow(img1, cmap = 'gray', interpolation = 'bicubic')
plt.xticks([])
plt.yticks([])
运行结果如下:
可见rectangle函数的参数与line函数的参数一模一样。
同时我们发现其他绘图函数的参数和line函数的参数也都是一样的。
圆形绘图代码:
import numpy as np
import cv2
from matplotlib import pyplot as pltimg1 = np.zeros((1024, 1024, 3), np.uint8)cv2.circle(img1,(512,512), 379,(255, 255, 0), 5)cv2.imwrite('circle.jpg', img1)
img1 = cv2.imread('circle.jpg', cv2.IMREAD_ANYCOLOR)
b,g,r = cv2.split(img1)
img1 = cv2.merge([r, g, b])plt.imshow(img1, cmap = 'gray', interpolation = 'bicubic')
plt.xticks([])
plt.yticks([])
运行结果为:
椭圆形绘图代码:
import numpy as np
import cv2
from matplotlib import pyplot as pltimg1 = np.zeros((1024, 1024, 3), np.uint8)cv2.ellipse(img1,(512,512), (379, 255), 0,0,360,150,-1)cv2.imwrite('ellipse.jpg', img1)
img1 = cv2.imread('ellipse.jpg', cv2.IMREAD_ANYCOLOR)
b,g,r = cv2.split(img1)
img1 = cv2.merge([r, g, b])plt.imshow(img1, cmap = 'gray', interpolation = 'bicubic')
plt.xticks([])
plt.yticks([])
运行结果为:
我们发现椭圆的绘制函数和其他绘制函数稍微有一些区别,这一点我们需要注意。
python使用opencv模块画简单的图形相关推荐
- python中opencv安装_怎么为python安装opencv模块-百度经验
opencv可以方便的进行图片处理,因此,搞人工智能和计算机视觉的人猿,很有必要为自己的python安装一个opencv模块. 下面,我就介绍一下具体方法. 工具/原料 电脑 python 方法/步骤 ...
- python通过opencv使用图片制作简单视频(亲测)
最近在学习视频制作,但是做起来太浪费时间了,我就一直在想能否使用python等脚本实现制作视频,因为我看视频网站上很多营销号视频就是通过图片制作视频的,播放量还不错,我准备试一试. 一.目标 1.自动 ...
- Python的turtle模块画爱心箭(附源码)
Python的turtle模块画爱心箭源码 import turtle as t t.hideturtle() t.speed(100) def f(a,b):#画箭,a,b为箭尖坐标t.penup( ...
- 用python函数画德国国旗代码_用Python的turtle模块画国旗
最近在学Python,发现Python的海龟绘图非常有趣,就分享一下!话不多说,先来Python turtle的官方文档链接: Python turtle.这里面有turtle的各类指令.turtle ...
- 用python函数画德国国旗代码_使用Python的turtle模块画国旗
Python的turtle模块画国旗主要用到两个函数:draw_rentangle和draw_star. 至于函数的调用就和我们学的C,C++是一样的.对于turtle画国旗的程序中,首先是查找国旗的 ...
- 用python画简单的图形
用python画几个简单的图形: ①三角形 from turtle import *for i in range(3):fd(180)left(120) ②倒三角+正三角 from turtle im ...
- python的opencv模块_Python图像识别精讲之OpenCV模块(1)
写在前面: OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux.Windows.Android和Mac OS操作系统上.它轻量级而且高效--由一系列 C 函数和少量 ...
- 能带曲线图绘制python_如何使用python的matplotlib模块画折线图
python是个很有趣的语言,可以在cmd命令窗口运行,还有很多的功能强大的模块.这篇经验告诉你,如何利用python的matplotlib模块画图. 工具/原料 windows系统电脑一台 pyth ...
- 怎么用python画饼状图_如何使用python的pygal模块画饼状图
python是一个很有趣的语言,可以在命令行窗口运行.python中有很多功能强大的模块,这篇经验告诉你,如何使用python的pygal模块,画饼状图. 工具/原料 windows系统电脑一台 py ...
最新文章
- 彻底搞懂Nginx的五大应用场景
- UIWebView中字体自动放大问题的探究
- 消息队列 应用场景 解析
- [Hands On ML] 4. 训练模型
- bpmn2.0业务过程模型和符号_IT帮业务架构学习小组学习内容
- pytorch创建datset
- 维护LINQ to SQL多对多表间关系[转]
- at shutdown 不起作用_at胎是什么胎
- linux登录显示 Error in service module错误
- java设计模式之组合设计模式
- 一次Full GC分析
- MAC中文版 FCPX V10.6.5 专属视频剪辑后期工具及其插件安装使用教程
- 花指令 用c语言,最新一批花指令
- 洛谷P3386-二分图最大匹配
- 面试小知识(2)为什么TCP需要三次握手和四次挥手
- 现有的人脸数据库介绍及下载链接
- 【内推】阿里集团2015年实习生招聘
- SQL中的条件判断语句(case when zhen)用法
- 【野蛮成长】经济学:红海与蓝海
- springboot福佳生活超市进销存管理系统毕业设计源码261620
热门文章
- java实现统计pv和uv_shell统计pv与uv、独立ip的方法
- 海康威视 0day_清华紫光原厂3D TLC颗粒初体验,海康威视C2000 PRO 2TB版体验
- 赵明称荣耀2022年全球销量有望翻倍;微软完成197亿美元收购Nuance | 美通社头条...
- 信息与通信的数学基础——第十三章 行波法
- 根据贷款还款方式(等额本金,等额本息,等本等息,先息后本),计算本息
- 利用Python脚本给图片批量添加文字水印
- 豪华金色粒子动态logo展示AE视频模板
- (a++) + (++a)
- 平面机构创意组合及分析实验QY-JX09
- TCP/IP网络编程:计算器服务器端/客户端