python 3.6.2
cv2
〇、tips
- np array 表示的是矩陣,下標第一唯是行號,對應y坐標,第二唯是列號,對應x坐標。cv對圖像做操作時,則是按照空間關系(x,y)
一、基本GUI
- 窗口
- 交互事件
1.窗口
- 創(chuàng)建及定位
cv2.namedWindow("w1",cv2.WINDOW_AUTOSIZE)
cv2.moveWindow("w1",50,100)
- 顯示圖像
img=cv2.imread("lena.jpg")
cv2.imshow("w1",img)
- 關閉窗口
cv2.destroyWindow("w1")
- 縮放窗口
cv2.resizeWindow("w1",100,200)
2.交互事件
鍵盤
cv2.waitKey(delay)
# 當delay<=0時,無限期等下去;delay>0,等待delay毫秒
# 1000毫秒=1秒
鼠標
事件機制為:
1. 定義統(tǒng)一格式的回調函數,對相應的事件做出響應。
2. 綁定窗口和回調函數
3. 切記,重新繪制一定要重新調用imshow,否則你什么都看不見?。。?/em>
鼠標事件:
Event
EVENT_MOUSEMOVE 0
EVENT_LBUTTONDOWN 1
EVENT_RBUTTONDOWN 2
EVENT_MBUTTONDOWN 3
EVENT_LBUTTONUP 4
EVENT_RBUTTONUP 5
EVENT_MBUTTONUP 6
EVENT_LBUTTONDBLCLK 7
EVENT_RBUTTONDBLCLK 8
EVENT_MBUTTONDBLCLK 9
Flag
EVENT_FLAG_LBUTTON 1
EVENT_FLAG_RBUTTON 2
EVENT_FLAG_MBUTTON 4
EVENT_FLAG_CTRLKEY 8
EVENT_FLAG_SHIFTKEY 16
EVENT_FLAG_ALTKEY 32
以后再更新具體說明
回調函數舉例:
def draw_circle(event,x,y,flags,param):#參數表都按照這個格式寫
# 以下自由發(fā)揮
if event==cv2.EVENT_LBUTTONDBLCLK:
cv2.circle(img,(x,y),200,(255,0,0),3)
cv2.imshow('w1',img)
綁定窗口與回調函數
cv2.setMouseCallback('w1',draw_circle)
二、圖像操作
以后更新
三、視頻操作
以后更新
四、高級GUI
- 繪制基本圖形
- 繪制文字(不支持漢字?)
1. Drawing
1) 畫線段
cv2.line(img,(100,100),(200,200),(0,255,0),8)#(畫布,起點,終點,顏色,畫筆粗細(-1表示填充))
cv2.imshow('w1',img)
2) 畫矩形
cv2.rectangle(img,(100,100),(200,200),(0,255,0),1)#(畫布,矩形左上角,矩形右下角,顏色,畫筆粗細(-1表示填充))
cv2.imshow('w1',img)
3) 畫圓
cv2.circle(img,(100,100),20,(0,255,0),3)#(畫布,圓心,半徑,顏色,畫筆粗細(-1表示填充))
cv2.imshow('w1',img)
4) 畫多邊形
定義點集,必須轉換成 頂點數12大小的矩陣
pts = np.array([[100,100], [200, 100],[200,200],[150,220],[100,200]], np.int32).reshape((-1, 1, 2))
cv2.polylines(img, [pts], False, (0, 255, 255),1)
# ture表示閉合,false表示不閉合
# 最后一個參數表示畫筆粗細,這里不能設置為-1哦~
cv2.imshow('w1',img)
5) 畫填充多邊形
pts = np.array([[100,100], [200, 100],[200,200],[150,220],[100,200]], np.int32).reshape((-1, 1, 2))
cv2.fillPoly(img, [pts],(0,255,0))
cv2.imshow('w1',img)
2. 寫字
這里的操作與cv差別還是挺大的
# 定義字體
font=cv2.FONT_HERSHEY_SIMPLEX
# 放置文本
cv2.putText(img,"hello world",(30,30),font,0.5,(0,255,0),1)#(畫布,文本,左下角位置,字體,大小,顏色,粗細)
cv2.imshow('w1',img)
五、簡單數學函數
以后更新