直線
cv2.line(image, (x1, y1), (x2, y2), color, 線條寬度)

矩型

圓型
底下的寬度若為正值, 則只有外框。若為負值,則為填滿
橢圓

多邊型

文字

中文字型
OpenCv打死就是不支援中文,所以只能靠PIL套件繪制中文。首先將OpenCv的array轉成PIL格式,繪製中文後,再轉回OpenCv格式。
要注意的是,如果是在 Linux 之下,要先使用底下指令安裝字型

二值化
二值化是將像素值大於門檻值(threshold),就指定一個新的數值,否則就指定另一個新數值。二值化在圖片的範圍選取或是標示物件上是一個重要的遮罩片。OpenCv使用 cv2.threshold()即可達成二值化。
cv2.threshold(灰階img, threshold, value, style)
請注意,只有灰階256色的圖片才可以二值化。底下代碼示範先將圖片讀入後轉成灰階,再二值化
二值化有5 種方式
binary : 低於門檻值的變為0,等於或大於門檻值的變成第三個參數
binary_inv : 大於門檻值設為0, 其它變成第三個參數
trunc : 大於門檻值改為第三個參數, 小於門檻值顏色不變
tozero : 小於門檻值改為 0, 大於門檻值顏色不變
tozero_inv : 大於門檻值改為 0, 小於門檻值顏色不變

透明矩型-1
不論是要有透明的矩型,或者是中文字型,使用 openCV都無法達成。此時只能使用Image.Draw。底下程式中,image_box為openCV格式,所以先使用Image.formarray(image_box)轉成PIL的 Image格式,然後再轉成RGBA格式,此圖片以A來稱呼。
緊接著由A圖 copy 一張一模一樣的B圖,將矩型繪制於B圖上。
最後使用Image.blend渲染AB二張圖,並設定透明值, 即可產生所要的透明矩型。

透明矩型-2
Pillow 有直接畫透明矩型的方法,整張圖必需是 RGB 格式,然後使用

