日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

Python+OpenCV 图像处理系列(3)—— 画线、矩形、画圆、画椭圆、画多边形

發(fā)布時間:2023/11/28 生活经验 21 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python+OpenCV 图像处理系列(3)—— 画线、矩形、画圆、画椭圆、画多边形 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

OpenCV 中的繪圖函數(shù)

使用 OpenCV 繪制不同幾何圖形,其中包括的函數(shù)有

cv2.line()
cv2.circle()
cv2.rectangle()
cv2.ellipse()
cv2.putText()

以上函數(shù)均需要接受以下參數(shù):

  • img:圖片的路徑;
  • color:形狀的顏色。以 RGB 為例,需要傳入一個元組,例如:(255,0,0)代表藍色。對于灰度圖只需要傳入灰度值;
  • thickness:線條的粗細。如果給一個閉合圖形設置為 -1,那么這個圖形就會被填充。默認值是 1;
  • linetype:線條的類型,8 連接,抗鋸齒等。默認情況是 8 連接。cv2.LINE_AA 為抗鋸齒,這樣看起來會非常平滑;

1. 畫直線

要畫一條線,你只需要告訴函數(shù)這條線的起點和終點。我們下面會畫一條從左上方到右下角的藍色線段。

import cv2img = cv2.imread("2018-11-28_16-30-49.jpg")
# shape返回的是一個tuple元組,第一個元素表示圖像的高度,第二個表示圖像的寬度,第三個表示像素的通道數(shù)。
size = img.shape
print size  # (1728, 3072, 3)cv2.line(img, pt1=(100, 0), pt2=(3072, 1000), color=(0, 255, 0), thickness=10)# pt1=(x, y) x 表示當前位置與圖片左邊距的距離; y 表示當前位置與圖片上邊距的距離
# pt1, pt2 分別表示當前線的起始點和終點cv2.imshow('aaa', img)
if cv2.waitKey(0) & 0xFF == ord('q'):cv2.destroyAllWindows()

圖像矩陣的 shape 屬性表示圖像的大小,shape 會返回 tuple 元組,第一個元素表示矩陣行數(shù),第二個元組表示矩陣列數(shù),第三個元素是 3,表示像素值由光的三原色組成。

2. 畫矩形

要畫一個矩形,你需要告訴函數(shù)的左上角頂點和右下角頂點的坐標。

import cv2img = cv2.imread("2018-11-28_16-30-49.jpg", cv2.IMREAD_COLOR)
size = img.shape
print size #  (1728, 3072, 3)cv2.rectangle(img, pt1=(300, 0), pt2=(500, 150), color=(0, 255, 0), thickness=3)cv2.imshow('aaa', img)
if cv2.waitKey(0) & 0xFF == ord('q'):cv2.destroyAllWindows()

3. 畫圓

要畫圓的話,只需要指定圓形的中心點坐標和半徑大小。我們在上面的矩形中畫一個圓。

import cv2img = cv2.imread("2018-11-28_16-30-49.jpg", cv2.IMREAD_COLOR)
size = img.shape
print size # (1728, 3072, 3)cv2.circle(img, center=(400, 60), radius=60, color=(0, 255, 255), thickness=-1)cv2.imshow('aaa', img)
if cv2.waitKey(0) & 0xFF == ord('q'):cv2.destroyAllWindows()

4. 畫橢圓

畫橢圓比較復雜,我們要多輸入幾個參數(shù)。一個參數(shù)是中心點的位置坐標。下一個參數(shù)是長軸和短軸的長度。橢圓沿逆時針方向旋轉的角度。橢圓弧演順時針方向起始的角度和結束角度,如果是 0 和 360,就是整個橢圓。查看 cv2.ellipse() 可以得到更多信息。

import cv2img = cv2.imread("2018-11-28_16-30-49.jpg", cv2.IMREAD_COLOR)size = img.shape
print size # (1728, 3072, 3)cv2.ellipse(img, center=(256, 256), axes=(100, 50), angle=0, startAngle=0, endAngle=180, color=(0, 255, 255), thickness=-1)cv2.imshow('aaa', img)
if cv2.waitKey(0) & 0xFF == ord('q'):cv2.destroyAllWindows()

5. 畫多邊形

畫多邊形,需要指點每個頂點的坐標。用這些點的坐標構建一個大小等于行數(shù) X1X2 的數(shù)組,行數(shù)就是點的數(shù)目。這個數(shù)組的數(shù)據(jù)類型必須為 int32。這里畫一個黃色的具有四個頂點的多邊形。

6. 在圖片上添加文字

在圖片上繪制文字,需要設置以下參數(shù):

  • 要繪制的文字 text
  • 要繪制的位置 org
  • 字體類型 fontFace
  • 字體大小 fontScale
  • 文字的一般屬性,如顏色、粗細、線條的類型等。一般推薦使用 linetype=cv2.LINE_AA
import cv2img = cv2.imread("2018-11-28_16-30-49.jpg", cv2.IMREAD_COLOR)font = cv2.FONT_HERSHEY_SIMPLEXcv2.putText(img, text='OpenCV', org=(10, 100), fontFace=font, fontScale=4, color=(0, 255, 255), thickness=4)
cv2.imshow('aaa', img)
if cv2.waitKey(0) & 0xFF == ord('q'):cv2.destroyAllWindows()

總結

以上是生活随笔為你收集整理的Python+OpenCV 图像处理系列(3)—— 画线、矩形、画圆、画椭圆、画多边形的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。