python-opencv

python 3.6.2
cv2

〇、tips

  • np array 表示的是矩陣,下標第一唯是行號,對應y坐標,第二唯是列號,對應x坐標。cv對圖像做操作時,則是按照空間關系(x,y)

一、基本GUI

  1. 窗口
  2. 交互事件

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. 繪制基本圖形
  2. 繪制文字(不支持漢字?)

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)

五、簡單數學函數

以后更新

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

友情鏈接更多精彩內容