Python?如何調(diào)用手機攝像頭
Python 調(diào)用手機攝像頭
在手機上安裝軟件
這里以安卓手機作為演示,ISO也是差不多的
軟件下載地址 (需要的朋友及時下載,鏈接有效期3天。)
注意:要想在電腦上查看手機攝像頭拍攝的內(nèi)容的在一個局域網(wǎng)里面(沒有 WIFI 可以使用 熱點 )
安裝完打開IP攝像頭服務器
點擊分享查看IP
查看局域網(wǎng)的IP
用Python的Opencv寫一個代碼來連接手機攝像頭
安裝opencv-python
pip install opencv-python
注意
可能安裝庫太慢可以這樣(這里使用的是清華的鏡像)
pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple/
保存的照片在當前的py文件同級目錄下面的img里面
手機橫著,電腦顯示的也是橫著,反之
# 將圖像旋轉(zhuǎn)90度以豎直顯示 img = cv2.rotate(img, cv2.ROTATE_90_CLOCKWISE) # 5. 旋轉(zhuǎn)圖像
使用
- ESC: 退出界面
- 空格: 保存手機攝像頭的照片
代碼
import cv2 import os # 創(chuàng)建窗口,設置為不能改變大小 cv2.namedWindow('camera', cv2.WINDOW_NORMAL) # 1. 修改窗口屬性,允許改變大小 # 攝像頭設置,這里使用的是網(wǎng)絡攝像頭的URL video = 'http://admin:admin@192.168.1.103:8081' capture = cv2.VideoCapture(video) # 2. 初始化攝像頭 # 初始化保存圖片的序號 p = 1 # 開始無限循環(huán),直到用戶中斷 while True: success, img = capture.read() # 3. 從攝像頭讀取一幀圖像 if not success: print("無法抓取幀") # 4. 如果讀取失敗,打印錯誤信息并退出循環(huán) break # 將圖像旋轉(zhuǎn)90度以豎直顯示 img = cv2.rotate(img, cv2.ROTATE_90_CLOCKWISE) # 5. 旋轉(zhuǎn)圖像 # 顯示圖像 cv2.imshow("camera", img) # 6. 在窗口中顯示圖像 # 按鍵處理 key = cv2.waitKey(10) # 7. 等待用戶按鍵,10毫秒響應一次 if key == 27: # 8. 如果按下ESC鍵(ASCII碼為27),退出循環(huán) break elif key == ord(' '): # 9. 如果按下空格鍵(ASCII碼為32),保存圖片 # 保存圖片到當前目錄下的img文件夾中 img_folder = 'img' if not os.path.exists(img_folder): os.makedirs(img_folder) # 10. 如果不存在img文件夾,則創(chuàng)建 img_filename = f"{img_folder}/image_{p}.jpg" # 11. 生成圖片文件名 cv2.imwrite(img_filename, img) # 12. 保存圖片 print(f"Saved image {p}.jpg") p += 1 # 13. 更新圖片序號 # 釋放攝像頭資源 capture.release() # 關閉所有OpenCV創(chuàng)建的窗口 cv2.destroyAllWindows()
注意
video的地址替換為查看局域網(wǎng)的IP時看到的地址
展示效果
電腦端
手機拍攝
分辨率低,也就是圖片還是有點模糊
解釋
導入必要的庫
import cv2 import os
首先,導入cv2
模塊(OpenCV庫)用于圖像處理和視頻流操作,以及os
模塊用于文件路徑操作。
創(chuàng)建窗口
cv2.namedWindow('camera', cv2.WINDOW_NORMAL)
創(chuàng)建一個名為camera
的窗口,并設置為可以改變大小。
攝像頭設置
video = 'http://admin:admin@192.168.1.103:8081' capture = cv2.VideoCapture(video)
設置網(wǎng)絡攝像頭的URL,并初始化攝像頭對象。
初始化保存圖片的序號
p = 1
初始化一個變量p
用于保存圖片時的序號。
主循環(huán)
while True:
開始一個無限循環(huán),用于持續(xù)捕獲和處理視頻幀。
讀取視頻幀
success, img = capture.read()
從攝像頭捕獲一幀圖像。success
是一個布爾值,表示是否成功捕獲幀,img
是捕獲到的圖像。
圖像旋轉(zhuǎn)
if not success: print("無法抓取幀") break img = cv2.rotate(img, cv2.ROTATE_90_CLOCKWISE)
如果未能成功捕獲幀,則打印錯誤信息并退出循環(huán)。成功捕獲后,將圖像旋轉(zhuǎn)90度以豎直方向顯示。
顯示圖像
cv2.imshow("camera", img)
將旋轉(zhuǎn)后的圖像顯示在之前創(chuàng)建的camera
窗口中。
按鍵處理
key = cv2.waitKey(10)
等待用戶按鍵操作,如果在10毫秒內(nèi)有按鍵則響應。
if key == 27: break elif key == ord(' '):
如果用戶按下ESC鍵(ASCII碼為27),則退出循環(huán)。如果按下空格鍵(ASCII碼為32),則保存當前幀為圖片。
保存圖片
img_folder = 'img' if not os.path.exists(img_folder): os.makedirs(img_folder) img_filename = f"{img_folder}/image_{p}.jpg" cv2.imwrite(img_filename, img) print(f"Saved image {p}.jpg") p += 1
檢查是否存在名為img
的文件夾,如果不存在則創(chuàng)建。生成圖片文件名,并將當前幀保存為圖片。打印保存圖片的信息,并更新圖片序號。
釋放資源
capture.release() cv2.destroyAllWindows()
循環(huán)結(jié)束后,釋放攝像頭資源,并關閉所有OpenCV創(chuàng)建的窗口。
到此這篇關于Python 調(diào)用手機攝像頭的文章就介紹到這了,更多相關Python 調(diào)用手機攝像頭內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
python統(tǒng)計指定目錄內(nèi)文件的代碼行數(shù)
這篇文章主要介紹了python統(tǒng)計指定目錄內(nèi)文件的代碼行數(shù)2019-09-09Pytorch框架實現(xiàn)mnist手寫庫識別(與tensorflow對比)
這篇文章主要介紹了Pytorch框架實現(xiàn)mnist手寫庫識別(與tensorflow對比),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2020-07-07