在图像上用OpenCV绘制十字交叉

在图像上用OpenCV绘制十字交叉

OpenCV是一个开源的Python计算机视觉库。它提供了许多功能来执行各种图像和视频处理操作。该库使用NumPy模块将所有视频帧和图像表示为ndarray类型。我们需要numpy库,并确保numpy模块也已安装到我们的Python解释器中。

在本文中,我们将看到使用OpenCV Python绘制图像上十字交叉的不同方法。让我们观察输入输出场景以了解如何在图像上绘制十字交叉。

输入输出场景

假设我们有一张输入图像,并且在输出中,我们将看到一个绘制在上面的十字交叉。

在图像上用OpenCV绘制十字交叉

让我们讨论一下在图像上绘制十字交叉的几种不同方法。

使用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种类型是:
    • 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)

输入图像

在图像上用OpenCV绘制十字交叉

输出图像

在图像上用OpenCV绘制十字交叉

使用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种线类型为:
    • 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)

输入图片

在图像上用OpenCV绘制十字交叉

输出图片

在图像上用OpenCV绘制十字交叉

示例

在这个示例中,我们将通过覆盖图像的四个角来绘制交叉线。最初,我们将使用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)

输入图片

在图像上用OpenCV绘制十字交叉

输出图片

在图像上用OpenCV绘制十字交叉

这是使用Python的OpenCV函数cv2.lines()和drawMarker()在特定图片上绘制十字的方法。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程