python 3.6.2
cv2
〇诉字、tips
- np array 表示的是矩陣懦尝,下標(biāo)第一唯是行號(hào)知纷,對(duì)應(yīng)y坐標(biāo),第二唯是列號(hào)陵霉,對(duì)應(yīng)x坐標(biāo)琅轧。cv對(duì)圖像做操作時(shí),則是按照空間關(guān)系(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)
- 關(guān)閉窗口
cv2.destroyWindow("w1")
- 縮放窗口
cv2.resizeWindow("w1",100,200)
2.交互事件
鍵盤
cv2.waitKey(delay)
# 當(dāng)delay<=0時(shí),無(wú)限期等下去效床;delay>0睹酌,等待delay毫秒
# 1000毫秒=1秒
鼠標(biāo)
事件機(jī)制為:
1. 定義統(tǒng)一格式的回調(diào)函數(shù),對(duì)相應(yīng)的事件做出響應(yīng)剩檀。
2. 綁定窗口和回調(diào)函數(shù)
3. 切記憋沿,重新繪制一定要重新調(diào)用imshow,否則你什么都看不見;铩7摹!
鼠標(biāo)事件:
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
以后再更新具體說(shuō)明
回調(diào)函數(shù)舉例:
def draw_circle(event,x,y,flags,param):#參數(shù)表都按照這個(gè)格式寫
# 以下自由發(fā)揮
if event==cv2.EVENT_LBUTTONDBLCLK:
cv2.circle(img,(x,y),200,(255,0,0),3)
cv2.imshow('w1',img)
綁定窗口與回調(diào)函數(shù)
cv2.setMouseCallback('w1',draw_circle)
二字币、圖像操作
以后更新
三则披、視頻操作
以后更新
四、高級(jí)GUI
- 繪制基本圖形
- 繪制文字(不支持漢字洗出?)
1. Drawing
1) 畫線段
cv2.line(img,(100,100),(200,200),(0,255,0),8)#(畫布士复,起點(diǎn),終點(diǎn)翩活,顏色阱洪,畫筆粗細(xì)(-1表示填充))
cv2.imshow('w1',img)
2) 畫矩形
cv2.rectangle(img,(100,100),(200,200),(0,255,0),1)#(畫布,矩形左上角菠镇,矩形右下角冗荸,顏色,畫筆粗細(xì)(-1表示填充))
cv2.imshow('w1',img)
3) 畫圓
cv2.circle(img,(100,100),20,(0,255,0),3)#(畫布利耍,圓心蚌本,半徑,顏色隘梨,畫筆粗細(xì)(-1表示填充))
cv2.imshow('w1',img)
4) 畫多邊形
定義點(diǎn)集程癌,必須轉(zhuǎn)換成 頂點(diǎn)數(shù)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表示不閉合
# 最后一個(gè)參數(shù)表示畫筆粗細(xì)轴猎,這里不能設(shè)置為-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)#(畫布,文本,左下角位置,字體,大小,顏色,粗細(xì))
cv2.imshow('w1',img)
五嵌莉、簡(jiǎn)單數(shù)學(xué)函數(shù)
以后更新