Python OpenCV畫圖教學(線條,圓形,橢圓形,矩形,多邊形,文字)

應用篇

這篇文章要介紹的是如何使用OpenCV來畫圖。

主要會學到下面幾種函數的用法:cv2.line(), cv2.circle(), cv2.rectangle(), cv2.ellipse(), cv2.putText()

Parameter

上面的幾個函數都有共同使用的parameter:

  • img: 要畫的圖象
  • color: 圖像的顏色,用BGR來指定顏色的話就用三個數字,例如如果要紅色的圖像的話就輸入(0, 0, 255)。如果是要黑白圖像的話就直接輸入數字來調整顏色的深淺就好了。
  • thickness: 畫圖的線的粗度,如果數字越大線越粗。另外,如果輸入-1的話圖形中的空白部分會被自動填滿。默認值是1。

畫直線

在畫直線的時候要指定值線的起點以及終點。下面的code是先做出一個全黑的畫面後再從畫面的右上畫一條紅線到左下。

import numpy as np
import cv2

# 製作黑色底圖
img = np.zeros((512,512,3), np.uint8)

# 畫粗度為7的紅色線
img = cv2.line(img, (511,0), (0,511), (0,0,255), 7)

# 顯示圖片
cv2.imshow('image',img)

# 按任意鍵關閉圖片視窗
cv2.waitKey(0)
cv2.destroyAllWindows()

畫矩形(長方形)

畫矩形的時候需要注意的是要指定矩形左上和右下的角的座標,下面的code可以畫出一個綠色的矩形。

img = cv2.rectangle(img, (418,0), (339,478), (0,255,0), 5)

畫圓

畫圓時要指定圓的中心的座標以及半徑,我們試著在上面的長方形中畫一個實心的圓形。

img_circle = cv2.circle(img, (378,239), 38, (0,0,225), -1)

畫橢圓

在畫橢圓的時候要指定的parameter比較多,首先我們要先指定橢圓的中心點的座標(x, y),接著要指定橢圓的大小(長軸, 短軸),第三我們要指定橢圓的偏移角度angle,這邊要注意的是這個角度是逆時針旋轉來指定。最後,指定startAngleendAngle來決定畫橢圓時的開始的角度以及結束的角度,這邊要注意的是開始角度與結束角度是順時針方向。(例如:如果指定0和360的話就會畫出一個完整的橢圓,指定0和180的話就只會畫出半個橢圓)

img = cv2.ellipse(img, (256,256), (70,30), 15, 0, 180, (0,0,255), -1)

上面著個code就是中心座標是(256, 256),長軸短軸分別是(70, 30),由水平開始向逆時針偏移15度,繪製角度由0~180度的實心橢圓。

畫多邊形

在畫多邊形時要指定所有的頂點的座標。在這邊我們會把座標儲存在ROWsx1x2這個大小的matrix裡,表示頂點座標的數字要是int32的數字。這邊我們試著畫有5個頂點的黃色多邊形。

pts = np.array([[10, 3], [20, 27], [33, 31], [45, 66], [82, 91]], np.int32)
pts = pts.reshape((-1, 1, 2))
img = cv2.polylines(img, [pts], True, (0,255,255))

當True變成False時,就不會變成一個圖形,只是將所有的點連起來的線而已。

寫文字

在圖像上寫文字時,要指定下面的幾個情報。

  • 想寫的文字的數據
  • 文字座標
  • font
  • 文字大小
  • 一般的情報(顏色,線的粗細,線的種類(cv.LINE_AA)等)
font = cv2.FONT_HERSHEY_COMPLEX
cv2.putText(img, 'OpenCVCool', (45, 300), font, 2, (255,255,255), 4, cv2.LINE_AA)

留言