OpenCV 繪圖
OpenCV 可以透過一些函數,來繪製直線、圓形、矩形、多邊形、文字於圖片上。下面我們一一來看如何進行這些繪製。
畫直線
cv2.line(img,pt1,pt2,color[, thickness[, lineType[, shift]]])
函數為上方所示,需要輸入的參數有圖片、起始點、終止點、顏色等三個,後面則為選擇性添加的選項,如線條粗細、線的類型等等。詳細可以參考 OpenCV 的 Docs。
import cv2 import numpy as np picture = np.ones((100,100,3),'uint8') picture = picture*255 picture_line = cv2.line(picture,(0,0),(50,50),(255,0,0),2) cv2.imshow('line',picture_line) cv2.waitKey(0)
上方為程式碼與繪製完的圖片,程式碼前 2 行為引入 OpenCV、numpy,第四行為建立一個 100 x 100 的圖片,第 5 行乘以 255 目的是讓數值全部都是 255 ,(255,255,255) 代表白色的意思,第 7 行為畫一條 (0,0) 到 (50,50) 的直線,這邊設定 (50,50) 是為了讓讀者了解起始點的算法是左上角開始,顏色我們填入 (255,0,0) 是藍色 ,三個空格依序是 BGR , 第 9 、10 行是顯示的部分 (不懂顯示的可以回去看前面一篇關於顯示圖片的文章與 waitKey 的文章)。
畫圓形
cv2.circle(img,center,radius,color[, thickness[, lineType[, shift]]])
函數為上方所示,需要輸入的參數有圖片、圓心、半徑、顏色等三個,後面則為選擇性添加的選項,如線條粗細、線的類型等等。詳細可以參考 OpenCV 的 Docs。
import cv2 import numpy as np picture = np.ones((200,200,3),'uint8') picture = picture*255 picture_circle = cv2.circle(picture,(100,100),20,(255,0,0),2) cv2.imshow('line',picture_circle) cv2.waitKey(0)
上方為程式碼與繪製完的圖片,程式碼前 2 行為引入 OpenCV、numpy,第四行為建立一個 200 x 200 的圖片 (因為前一張圖太小了放大一點),第 5 行乘以 255 目的是讓數值全部都是 255 ,(255,255,255) 代表白色的意思,第 7 行為畫一個 (100,100) 為圓心半徑 20 的圓,顏色我們填入 (255,0,0) 是藍色 ,三個空格依序是 BGR , 第 9 、10 行是顯示的部分 (不懂顯示的可以回去看前面一篇關於顯示圖片的文章與 waitKey 的文章)。
畫矩形
cv2.rectangle(img,pt1,pt2,color[, thickness[, lineType[, shift]]])
函數為上方所示,需要輸入的參數有圖片、矩形左上點、矩形右下點、顏色等三個,後面則為選擇性添加的選項,如線條粗細、線的類型等等。詳細可以參考 OpenCV 的 Docs。
import cv2 import numpy as np picture = np.ones((200,200,3),'uint8') picture = picture*255 picture_rectangle = cv2.rectangle(picture,(50,50),(150,150),(255,0,0),2) cv2.imshow('line',picture_rectangle) cv2.waitKey(0)
上方為程式碼與繪製完的圖片,程式碼前 2 行為引入 OpenCV、numpy,第四行為建立一個 200 x 200 的圖片,第 5 行乘以 255 目的是讓數值全部都是 255 ,(255,255,255) 代表白色的意思,第 7 行為畫一 (50,50) 到 (150,150) 的矩形,顏色我們填入 (255,0,0) 是藍色 ,三個空格依序是 BGR , 第 9 、10 行是顯示的部分 (不懂顯示的可以回去看前面一篇關於顯示圖片的文章與 waitKey 的文章)。
印上文字
cv2.putText(img,text,org,fontFace,fontScale,color[, thickness[, lineType[, shift]]])
函數為上方所示,需要輸入的參數有圖片、顯示的文字、文字左下角的點 (org)、文字字體 (fontFace)、文字大小 (fontScale),後面則為選擇性添加的選項,如線條粗細、線的類型等等。詳細可以參考 OpenCV 的 Docs。
import cv2 import numpy as np picture = np.ones((200,200,3),'uint8') picture = picture*255 picture_text = cv2.putText(picture,"Hello World",(20,100),cv2.FONT_HERSHEY_SCRIPT_COMPLEX,1.0,(255,0,0),2) cv2.imshow('text',picture_text) cv2.waitKey(0)
上方為程式碼與繪製完的圖片,程式碼前 2 行為引入 OpenCV、numpy,第四行為建立一個 200 x 200 的圖片,第 5 行乘以 255 目的是讓數值全部都是 255 ,(255,255,255) 代表白色的意思,第 7 行為顯示文字 Hello World,顏色我們填入 (255,0,0) 是藍色 ,三個空格依序是 BGR , 第 9 、10 行是顯示的部分 (不懂顯示的可以回去看前面一篇關於顯示圖片的文章與 waitKey 的文章)。