iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 19
1

我們已經在前面的章節學會如何用cv2.line函式畫出一條直線,但我們在做比較複雜的圖像處理時不可能只用到直線,有時候我們亦會需要用折線畫出多邊形,這時候折線繪圖函式——cv2.polylines就派上用場了。

import numpy as np
import cv2

img = np.zeros((480, 640, 3), np.uint8)

img.fill(128)

在使用cv2.polylines函式時,通常會用Numpy的np.array定義陣列和reshape功能設定形狀,所以和上一章一樣,我們把cv2.polylines需要的參數用Numpy的函式先設定好,這樣也比較便於理解:

# 頂點座標
pt = np.array([[200, 200], [300, 100], [400, 200], [400, 400], [200, 400]], np.int32)

# 用reshape轉為(-1, 1, 2)的陣列
pt = pts.reshape((-1, 1, 2))

# 顏色
color = (0, 255, 0)

設定完之後我們把參數寫進去試試看:

# cv2.polylines(影像, 頂點座標, 封閉線, 顏色, 寬度)
cv2.polylines(img, [pt], True, color, 2)

頂點座標就是多邊形中每個點的座標,這個參數必須要是一個形狀為 (頂點數量, 1, 2) 的陣列,所以在把pt變數放進cv2.polylines函數之前,要先用reshape調整一下。

封閉線參數是一個Boolean值,如果設定True的話,函式就會把尾端座標點和起始座標點連接起來,形成一個閉鎖式的多邊形,如果設定為False就是不接起封閉線。

印出來看看吧:

cv2.imshow('polylineImage', img)

cv2.waitKey(0)
cv2.destroyAllWindows()

上一篇
Day18-畫橢圓
下一篇
Day20-畫折線2
系列文
OpenCV 從零開始的影像處理30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言