if not cap.isOpened():
print(“Cannot open camera”)
exit()
while True:
# 逐幀捕獲
ret, frame = cap.read()
# 如果正確讀取幀,ret為True
if not ret:
print(“Can’t receive frame (stream end?). Exiting …”)
break
frame = cv2.flip(frame, 1) # 水平翻轉(zhuǎn)
ret = out.write(frame)
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
# 顯示結(jié)果幀e
cv2.imshow(‘frame’, frame)
if cv2.waitKey(1) == ord(‘q’): break
# 完成所有操作后,釋放捕獲器
out.release()
cap.release()
cv2.destroyAllWindows()
captureVideoFromCamera()
六、OpenCV-Python的鼠標(biāo)事件捕獲OpenCV提供了設(shè)置鼠標(biāo)事件回調(diào)函數(shù)來提供鼠標(biāo)事件處理的機(jī)制,設(shè)置回調(diào)函數(shù)的方法如下:
cv2.setMouseCallback(winName, OnMouseFunction, param)
其中winName為要設(shè)置鼠標(biāo)回調(diào)處理的窗口名,OnMouseFunction為回調(diào)函數(shù),用于處理鼠標(biāo)響應(yīng),param為設(shè)置回調(diào)函數(shù)時(shí)傳入的應(yīng)用相關(guān)特定參數(shù),可以不設(shè)置,但需要在回調(diào)函數(shù)訪問設(shè)置回調(diào)函數(shù)對象屬性時(shí)非常有用 。
示例:
cv2.namedWindow(‘image’)
cv2.setMouseCallback(‘image’, draw_circle)
七、waitKey鍵盤事件處理openCV提供了快速的鍵盤處理支持函數(shù)waitKey,調(diào)用語法:
retval = cv.waitKey( [, delay] )
其中:
delay:等待鍵盤響應(yīng)的時(shí)間,單位是毫秒,如果為0,則是一直等待到有鍵盤輸入,否則就是等待對應(yīng)時(shí)間還沒有輸入就超時(shí)返回retval:如果是超時(shí)返回-1,否則返回對應(yīng)鍵盤按鍵的ASCII碼,但注意對于部分功能鍵如F1–F10返回值為0,其他功能鍵老猿未一一測試,可以確認(rèn)ESC鍵值可以正常返回(返回值27),Ctrl+c返回3八、OpenCV的矩形繪制OpenCV提供了在圖像中繪制幾何圖形的方法,繪制的圖像包括矩形、橢圓、扇形、弧等 。本文主要介紹矩形的繪制,具體調(diào)用語法如下:
rectangle(img, pt1, pt2, color, thickness=None, lineType=None, shift=None)
其中參數(shù):
img:要顯示的圖像,為numpy數(shù)組,格式為BGR格式pt1:左上角點(diǎn)的坐標(biāo)pt2:右下角點(diǎn)的坐標(biāo)color:繪制的顏色,為BGR格式的三元組,如(255,0,0)表示藍(lán)色thickness:邊框的厚度,如果為負(fù)數(shù),則該矩形為實(shí)心矩形,否則為空心矩形linetype:線型,包括4連通、8連通以及抗鋸齒線型,使用缺省值即可shift:坐標(biāo)值的精度,為2就表示精確到小數(shù)點(diǎn)后2位另外該方法還有個(gè)變種調(diào)用方式:
rectangle(img, rec, color[, thickness[, lineType[, shift]]]),其中的rec為上面pt1和pt2構(gòu)建的矩形 。
除了矩形,OpenCV還支持繪制點(diǎn)、直線、圓、橢圓、文本(不支持中文)等,具體可參考《使用Python OpenCV處理圖像之詳解直線、圓、矩形及文字的繪制》,老猿就不展開介紹了 。
下面的示例代碼是打開視頻播放,鼠標(biāo)點(diǎn)擊后暫停播放并在點(diǎn)擊位置畫圓,再次點(diǎn)擊恢復(fù)播放:
import cv2
def mouseEvent( event, x, y, flags, param):
if event == cv2.EVENT_LBUTTONDOWN:
param[0] = not param[0]
param[1] = (x,y)
def playVideoFile():
cap = cv2.VideoCapture(r’f:videozbl1.mp4′)
fps = 1
eventInf = [False,None]
frame = None
if not cap.isOpened():
print(“Cannot open camera”)
exit()
cv2.namedWindow(‘image’)
cv2.setMouseCallback(‘image’, mouseEvent,eventInf)
while True:
# 逐幀捕獲
pause,mousePos = eventInf
if not pause:
ret, frame = cap.read()
if not ret:
if frame is None :
print(“The video has end.”)
else:
print(“Read video error!”)
break
else:
以上關(guān)于本文的內(nèi)容,僅作參考!溫馨提示:如遇健康、疾病相關(guān)的問題,請您及時(shí)就醫(yī)或請專業(yè)人士給予相關(guān)指導(dǎo)!
「愛刨根生活網(wǎng)」www.malaban59.cn小編還為您精選了以下內(nèi)容,希望對您有所幫助:- ??剪映視頻右上角logo怎么去掉???
- 高清無線視頻傳輸系統(tǒng)操作 免費(fèi)無線網(wǎng)怎么連接
- ??抖音發(fā)視頻怎么添加話題標(biāo)簽???
- ??微信視頻號直播怎么連麥???
- ??剪映怎么剪掉視頻中的抖音號? 抖音視頻里的抖音號去掉的技巧??
- 視頻會(huì)議軟件使用方法 zoom視頻會(huì)議怎么用
- 芒果視頻app最新版下載方法 芒果tv安裝包怎么安裝到電視
- 3d視頻制作手機(jī)軟件推薦 3dmax軟件安裝教程
- ??微視怎么制作新春倒計(jì)時(shí)短視頻???
- 女子發(fā)惡搞視頻被判賠7萬!瀘州老窖稱焦點(diǎn)在于是否貶損品牌
