使用 OpenCV 在图像上绘制十字
OpenCV 是一个 Python 中的开源计算机视觉库。它提供了许多函数来执行各种图像和视频处理操作。该库使用 Numpy 模块将所有视频帧和图像表示为 ndarray 类型。它需要 numpy 库,我们需要确保 numpy 模块也安装在我们的 Python 解释器中。
在本文中,我们将了解使用 OpenCV Python 在图像上绘制十字的不同方法。让我们观察输入输出场景以了解如何在图像上绘制十字。
输入输出场景
假设我们有一个输入图像,在输出中,我们将看到在…上绘制的十字

让我们讨论一下在图像上绘制十字的不同方法。
使用 cv2.drawMarker() 函数
该函数通过预定义的位置在图像上绘制标记。它支持多种标记类型。以下是此函数的语法 -
cv.drawMarker(img, position, color[, markerType[, markerSize[, thickness[, line_type]]]])
参数
img:要绘制标记的源图像。
position:十字准线所在的位置。
color:指定标记的颜色。
thickness:这是一个可选参数。它指定标记的线宽。
markerType:指定标记类型。可用的类型有
cv2.MARKER_CROSS:十字准线标记形状。
cv2.MARKER_TILTED_CROSS:45 度倾斜的十字准线标记形状。
cv2.MARKER_STAR:星形标记形状,它是十字和倾斜十字的组合。
cv2.MARKER_DIAMOND:菱形标记形状。
cv2.MARKER_SQUARE:正方形标记形状。
cv2.MARKER_TRIANGLE_UP:向上指向的三角形标记形状。
cv2.MARKER_TRIANGLE_DOWN:向下指向的三角形标记形状。
thickness:指定线宽。
lineType(可选):它指定我们要使用的线类型。可用的 4 种 LineTypes 为
FILLED
LINE_4
LINE_8
LINE_AA
markerSize:它指定标记的长度,默认设置为 20 像素
示例
在此示例中,我们将在输入图像上绘制一个黑色十字。
import cv2
from random import randint
img = cv2.imread('Images/butterfly1.jpg')
cv2.imshow('Input image', img)
cv2.drawMarker(img, (250, 160), color=[0, 0, 0], thickness=10,
markerType= cv2.MARKER_TILTED_CROSS, line_type=cv2.LINE_AA,
markerSize=100)
cv2.imshow('Output image', img)
cv2.waitKey(0)
输入图像

输出图像

使用 cv2.line() 函数
该函数在图像中连接点 pt1 和 pt2 之间绘制一条线。以下是 line() 函数的语法 -
cv.line(img, pt1, pt2, color[, thickness[, lineType[, shift]]])
参数
img:要绘制标记的源图像。
pt1:图像中线条应开始位置的 x 和 y 坐标的元组。
pt2:图像中线条应结束位置的 x 和 y 坐标的元组。
color:指定标记的颜色。
thickness:这是一个可选参数。它指定标记的线宽。
lineType(可选):它指定我们要使用的线类型。可用的 4 种 LineTypes 为
FILLED
LINE_4
LINE_8
LINE_AA
shift:它指定点坐标中的分数位数。
示例
让我们获取一个图像,并使用 cv2.line() 方法绘制一个十字。
import cv2
from random import randint
img = cv2.imread('Images/flower-black-background.jpg')
cv2.imshow('Input image', img)
coordinates = [[(420, 280), (520,280)], [(470, 220), (470,350)]]
cv2.line(img, coordinates[0][0],coordinates[0][1], color=[0, 0, 250], thickness=20)
cv2.line(img, coordinates[1][0],coordinates[1][1], color=[0, 0, 250], thickness=20)
cv2.imshow('Output image', img)
cv2.waitKey(0)
输入图像

输出图像

示例
在此示例中,我们将通过覆盖图像的 4 个角来绘制十字线。最初,我们将使用 numpy 数组(图像数组)的 shape 属性获取图像的尺寸,并根据这些值,我们可以识别图像的角。
import cv2
from random import randint
img = cv2.imread('Images/Lenna.png')
cv2.imshow('Input image', img)
# image height = shape[0]
# image width = shape[1]
shape = img.shape
cv2.line(img, (0,0),shape[:2], color=[0, 0, 250], thickness=20)
cv2.line(img, (shape[1], 0), (0, shape[0]), color=[0, 0, 250], thickness=20)
cv2.imshow('Output image', img)
cv2.waitKey(0)
输入图像

输出图像

这就是 Python OpenCV 函数 cv2.lines() 和 drawMarker() 如何在特定图像上绘制十字的方式。
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP