OpenCV-12绘制图像

OpenCV提供了许多绘制图像的API,可以在图像上绘制各种图形,例如直线,矩形,圆,椭圆等图形。

一、画直线

利用API line(img, pt1, pt2, color, thickness, lineType, shift)可以绘制直线。

其中img:表示在哪个图像上画直线

pt1,pt2:开始点和结束点,用于指定线的开始和结束位置。(按照坐标点的形式写入,用元组的格式,先列后行)

color:指定直线的颜色。(颜色的形式也为BGR的元组形式)

thickness:指定线宽。(数值越大,线条越粗)

lineType:指定线性,线性为0, 4, 8, 16,默认为8。(只有实线一种类型,数字越大,线越光滑)

shift:坐标缩放比例。(一般可以不用写)

示例代码如下:

import cv2
import numpy as np


img = np.zeros((480, 640, 3), np.uint8)   # 创建一个全黑的背景图

cv2.line(img, (10, 20), (300, 400), (0, 0, 255), 5, 4)   # 画红色的线
cv2.line(img, (80, 100), (380, 480), (0, 0, 255), 5, 16)

cv2.imshow("line", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

输出结果如下:

二、画矩形

画矩形的API中的参数与画直线的API一样,比较简单。

示例代码如下:

import cv2
import numpy as np


img = np.zeros((480, 640, 3), np.uint8)   # 创建一个全黑的背景图

cv2.rectangle(img, (20, 50), (380, 380), (0, 255, 0), 5, 16)   # 用绿色画框


cv2.imshow("line", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

输出结果如下:

三、画圆

画圆我们使用以下API:circle(img, center, radius, color, thickness, lineType, shift)

相比较于画直线与矩形,将起始点和终点改为中心点和半径,其他参数相同。

示例代码如下:

import cv2
import numpy as np


img = np.zeros((480, 640, 3), np.uint8)   # 创建一个全黑的背景图

# Opencv读取的行和列与numpy相反
cv2.circle(img, (320, 240), 50, (255, 0, 0), 5, 16)   # 在中心点用蓝色画圆

cv2.imshow("line", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

输出结果如下:

四、绘制椭圆

使用API  cv.ellipse(img, center, axes, angle, startAngel, endAngle, color, thickness, lineType, shift)

其中img, center, color, thickness, lineType, shift与上述参数要求一样。

Opencv画椭圆,相当于将椭圆锁在一个矩形里面,沿着切线画。

axes为axis的复数,需要填写椭圆x轴与y轴长度的一半。

angle:椭圆可以任意旋转角度,可以是横着的也可以是竖着的。(默认是0°,且逆时针旋转)

startAngle:从哪个角度开始

endAngle:从哪个角度结束°

开始角度和结束角度可以设置画取椭圆的一部分,而不是整个椭圆。从0°~360°则为一个完整的椭圆。

当把axes的两个数值改为相等,则相当于画圆形。

示例代码如下:

import cv2
import numpy as np


img = np.zeros((480, 640, 3), np.uint8)   # 创建一个全黑的背景图
img2 = np.zeros((480, 640, 3), np.uint8)   
img3 = np.zeros((480, 640, 3), np.uint8)   


cv2.ellipse(img, (320, 240), (80, 40), 0, 0, 360, (0, 255, 0), 5, 16)
cv2.ellipse(img2, (320, 240), (80, 40), 90, 0, 360, (0, 255, 0), 5, 16)
cv2.ellipse(img3, (320, 240), (80, 40), 0, 0, 180, (0, 255, 0), 5, 16)
# Opencv读取的行和列与numpy相反


cv2.imshow("line", img)
cv2.imshow("line2", img2)
cv2.imshow("line3", img3)
cv2.waitKey(0)
cv2.destroyAllWindows()

输出结果如下:

通过改变不同的角度值可以获取不同的椭圆类型。

### 如何使用 OpenCV-Python 绘制直线 在 OpenCV-Python 中,`cv2.line()` 函数用于绘制一条连接两个点的直线。以下是 `cv2.line()` 的基本语法及其参数解释: #### 参数说明 - **img**: 输入图像(即要在其上绘图的目标图像)。 - **pt1**: 起始点坐标 `(x1, y1)`,表示直线起点的位置。 - **pt2**: 结束点坐标 `(x2, y2)`,表示直线终点的位置。 - **color**: 直线的颜色,通常以 BGR 格式指定。例如 `(0, 0, 255)` 表示红色。 - **thickness**: 直线的粗细程度,默认值为 1。 - **lineType**: 线条类型,可选值包括 `cv2.LINE_AA`, `cv2.LINE_8`, 和 `cv2.LINE_4`。 下面是完整的代码示例,展示如何使用 OpenCV-Python 在一张空白图像绘制一条直线[^1]。 ```python import cv2 import numpy as np # 创建一个黑色背景的画布 (高度=512px, 宽度=512px, RGB三通道) image = np.zeros((512, 512, 3), dtype=np.uint8) # 定义起始点和结束点 start_point = (50, 50) # 起点坐标 (x1, y1) end_point = (400, 400) # 终点坐标 (x2, y2) # 设置线条颜色和厚度 color = (0, 255, 0) # 绿色 (B,G,R) thickness = 2 # 粗细为 2 像素 # 使用 cv2.line() 方法绘制直线 cv2.line(image, start_point, end_point, color, thickness) # 显示结果图像 cv2.imshow('Line Drawing', image) cv2.waitKey(0) # 按任意键退出窗口 cv2.destroyAllWindows() ``` 上述代码会生成一幅大小为 \(512 \times 512\) 的黑底彩色图像,并在其上绘制一条绿色的斜线。 --- ### 注意事项 如果需要进一步自定义线条样式,比如抗锯齿效果,则可以在 `lineType` 参数中设置为 `cv2.LINE_AA`,这会使线条更加平滑美观[^2]。 此外,在实际应用中,可能还需要加载已有图像并在此基础上进行绘图操作。此时只需将 `np.zeros(...)` 替换为目标图像即可[^3]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一道秘制的小菜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值