今天學習對影像的繪畫操作
繪制直線、圓、矩形、橢圓、多邊形、文字
| 圖形 | 函式 |
| 直線 | cv.line(img,start,end,color,thickness) 圖片物件,起始坐標(x軸,y軸),結束坐標,顏色,寬度 |
| 圓 | cv.circle(img,centerpoint, r, color, thickness) 圖片物件,中心點坐標,半徑大小,顏色,寬度 |
| 矩形 | cv.rectangle(img,leftupper,rightdown,color,thickness) 圖片物件,左上角坐標,右下角坐標,顏色,寬度 |
| 橢圓 | cv.ellipse(img,centerpoint,axesLength,angle,stratAngle,endAngle,color,thickness) 圖片物件,中心點坐標,長短軸,順時針旋轉度數,開始角度,顏色,寬度 |
| 文字 | cv.putText(img,text,station, font, fontsize,color,thickness,lineType) 圖片物件,文字,坐標,字體,大小,顏色,寬度,線型 |
這里給出font的樣式:
cv.FONT_HERSHEY_SIMPLEX
cv.FONT_HERSHEY_PLAIN
cv.FONT_HERSHEY_DUPLEX
cv.FONT_HERSHEY_COMPLEX
cv.FONT_HERSHEY_TRIPLEX
cv.FONT_HERSHEY_COMPLEX_SMALL
cv.FONT_HERSHEY_SCRIPT_SIMPLEX
cv.FONT_HERSHEY_SCRIPT_COMPLEX
cv.FONT_ITALIC
多邊形繪畫需要用到2個np函式
array創建各點坐標的陣列
np.array([[10,5],[20,30],[70,20],[50,10]], np.int32)# array必須是int32型
reshape變換陣列排列格式,將陣列設定成cv函式中通用格式
pts = pts.reshape((-1,1,2,))
#括號里的3給引數分別是行數、列數、維數,意思是以一列顯示這個二維陣列
這里舉個簡單的例子
np.arange(16).reshape(2,8) #生成16個自然數,以2行8列的形式顯示
# Out:
# array([[ 0, 1, 2, 3, 4, 5, 6, 7],
# [ 8, 9, 10, 11, 12, 13, 14, 15]])
引數為-1時,會自動計算
np.arange(16).reshape(2,-1) #生成16個自然數,以2行x列的形式顯示
x = 16 / 2 = 8
一個cv函式
cv2.polylines將各點連線
cv2.polylines(img,array,isClosed=True/False, color, thickness)
#圖片物件,點坐標,是否閉合,顏色,寬度
例程:
pts = np.array([[10, 10], [80, 10], [80, 100], [10, 100]], np.int32)
pts = pts.reshape((-1, 1, 2))
cv2.polylines(img, [pts], True, (255, 255, 0), 1)
綜合示例
import numpy as np
import cv2 as cv
import matplotlib.pyplot as plt
img = np.zeros((512,512,3),np.uint8)
#img = cv.imread('islands.jpg',0)
cv.line(img,(0,0),(511,511),(255,0,0),5)
cv.circle(img,(50,50), 30, (255,55,0), 10)
cv.putText(img,"text",(36,400),cv.FONT_HERSHEY_SCRIPT_COMPLEX,4,(55,55,0),2,cv.LINE_AA)
cv.ellipse(img,(333,333),(100,50),0,0,360,(255,222,222),-1)
pts = np.array([[10, 10], [80, 10], [80, 150], [10, 200]], np.int32)
pts = pts.reshape((-1, 1, 2))
cv.polylines(img, [pts], True, (255, 255, 0), 1)
cv.imshow('image',img)
cv.waitKey(0)
plt.imshow(img[:,:,::-1])
plt.show()
效果展示:

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/302163.html
標籤:AI
上一篇:論文解讀 - An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale
