python-----從本地攝像頭和網絡攝像頭截取圖片 ,具體代碼如下所示:
import cv2
# 獲取本地攝像頭
# folder_path 截取圖片的存儲目錄
def get_img_from_camera_local(folder_path):
cap = cv2.VideoCapture(0)
i = 1
while True:
ret, frame = cap.read()
cv2.imshow("capture", frame)
print str(i)
cv2.imwrite(folder_path + str(i) + '.jpg', frame) # 存儲為圖像
if cv2.waitKey(1) & 0xFF == ord('q'):
break
i += 1
cap.release()
cv2.destroyAllWindows()
# 獲取網絡攝像頭,格式:rtsp://username:pwd@ip/
# folder_path 截取圖片的存儲目錄
def get_img_from_camera_net(folder_path):
cap = cv2.VideoCapture('rtsp://username:pwd@ip/')
i = 1
while True:
ret, frame = cap.read()
cv2.imshow("capture", frame)
print str(i)
cv2.imwrite(folder_path + str(i) + '.jpg', frame) # 存儲為圖像
if cv2.waitKey(1) & 0xFF == ord('q'):
break
i += 1
cap.release()
cv2.destroyAllWindows()
# 測試
if __name__ == '__main__':
folder_path = 'D:\\img_from_camera\\'
get_img_from_camera_local(folder_path)
PS:下面看下用 python , opencv 打開網絡攝像頭讀取圖像
打開網絡攝像頭用如下代碼:
###########################################
import cv2
url = 'rtsp://admin:password@192.168.1.104:554/11'
cap = cv2.VideoCapture(url)
while(cap.isOpened()):
# Capture frame-by-frame
ret, frame = cap.read()
# Display the resulting frame
cv2.imshow('frame',frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()
############################################
注: 將從攝像頭獲取的圖像從bgr轉為rgb : image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)
1、cap = cv2.VideoCapture(0)
VideoCapture()中參數是0,表示打開筆記本的內置攝像頭,參數是1,表示打開usb攝像頭,
參數是視頻文件路徑則打開視頻,如cap = cv2.VideoCapture("../test.avi")
2、ret,frame = cap.read()
cap.read()按幀讀取視頻,ret,frame是獲cap.read()方法的兩個返回值。其中ret是布爾值,如果讀取幀是正確的則返回True,如果文件讀取到結尾,它的返回值就為False。frame就是每一幀的圖像,是個三維矩陣。
3、cv2.waitKey(1),waitKey()方法本身表示等待鍵盤輸入,
參數是1,表示延時1ms切換到下一幀圖像,對于視頻而言;
參數為0,如cv2.waitKey(0)只顯示當前幀圖像,相當于視頻暫停,;
參數過大如cv2.waitKey(1000),會因為延時過久而卡頓感覺到卡頓。
c得到的是鍵盤輸入的ASCII碼,esc鍵對應的ASCII碼是27,即當按esc鍵是if條件句成立
4、調用release()釋放攝像頭,調用destroyAllWindows()關閉所有圖像窗口。
總結
以上所述是小編給大家介紹的python實現從本地攝像頭和網絡攝像頭截取圖片功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對億速云網站的支持!
如果你覺得本文對你有幫助,歡迎轉載,煩請注明出處,謝謝!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。