图像入门2

图像入门2

1. 大纲

1、使用OpenCV绘制不同的几何形状

2、学习以下功能:cv.line(),cv.circle(),cv.rectangle(),cv.sllipse(),cv.putText()

2. 常见参数

img:绘制形状的图像

color:形状的颜色,作为元组传递

厚度:线或圆等的粗细。对闭合图形传递-1,填充形状,默认厚度为1

lineType:线的类型,是否为8连接线,抗锯齿线等。cv.LINE_AA

3. 绘制各类几何图形

​ 要绘制一条线,传递线开始和结束的坐标。创建一个黑色的图像,并从左上角到右下角绘制一条直线。

# 绘制一条厚度为5的蓝色对角线
cv.line(img, (0, 0), (511, 511), (48, 137, 186), 5)

​ 要绘制一个矩形,传递矩形的左上角和右下角的坐标,其他参数类似。

# 绘制矩形
cv.rectangle(img, (384, 0), (510, 128), (156, 123, 212), 3)

​ 要绘制一个圆,需要确定其中心和半径,其他参数类似。

# 绘制圆形
cv.circle(img, (447, 63), 63, (64, 172, 255), -1)

​ 要绘制一个椭圆,需要确定中心的坐标,和长短轴的长度,angle是椭圆沿逆时针方向旋转的角度。startAngleEndAngle表示从主轴沿顺时针方向测量的椭圆弧的开始和结束。即给出0和360给出完整的椭圆。

# 绘制椭圆
cv.ellipse(img, (256, 256), (100, 50), 0, 0, 360, (112, 24, 36), -1)

​ 如果要绘制多边形,首先需要确定各个顶点的坐标,创建一个ROW*1*2的数组,其中ROW是顶点数,并且类型为int32

# 绘制多边形
pts = np.array([[100, 50], [50, 230], [270, 480], [480, 100]], np.int32)
pts = pts.reshape((-1, 1, 2))
cv.polylines(img, [pts], True, (0, 255, 255))

​ 如果要绘制文本,首先需要设置字体格式font,并调用cv.putText()函数,第一个参数是图像名称,第二个参数是文本内容,第三个参数是文本的起始位置,第四个参数是字体的格式,第五个参数是字体的大小,第六个参数是字体的颜色。为了获得更好的外观,我们使用lineType=cv.LINE.AA

# 绘制文本
font = cv.FONT_HERSHEY_COMPLEX
cv.putText(img, 'discipline', (10, 500), font, 2, (255, 255, 255), 2, cv.LINE_AA)

​ 在完成上述代码之后,效果如下图所示:

4. 附录(完整代码)

import numpy as np
import cv2 as cv


if __name__ == "__main__":
    # 创建黑色的图像
    img = np.zeros((512, 512, 3), np.uint8)
    # 绘制一条厚度为5的蓝色对角线
    cv.line(img, (0, 0), (511, 511), (48, 137, 186), 5)
    # 绘制矩形
    cv.rectangle(img, (384, 0), (510, 128), (156, 123, 212), 3)
    # 绘制圆形
    cv.circle(img, (447, 63), 63, (64, 172, 255), -1)
    # 绘制椭圆
    cv.ellipse(img, (256, 256), (100, 50), 0, 0, 360, (112, 24, 36), -1)
    # 绘制多边形
    pts = np.array([[100, 50], [50, 230], [270, 480], [480, 100]], np.int32)
    pts = pts.reshape((-1, 1, 2))
    cv.polylines(img, [pts], True, (0, 255, 255))
    # 绘制文本
    font = cv.FONT_HERSHEY_COMPLEX
    cv.putText(img, 'discipline', (10, 500), font, 2, (255, 255, 255), 2, cv.LINE_AA)

    cv.imshow('drawing', img)
    cv.waitKey(0)
    cv.destroyAllWindows()
posted @   叽叽cccc  阅读(25)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 单线程的Redis速度为什么快?
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 展开说说关于C#中ORM框架的用法!
点击右上角即可分享
微信分享提示