使用 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