Python?如何調(diào)用手機(jī)攝像頭
Python 調(diào)用手機(jī)攝像頭
在手機(jī)上安裝軟件
這里以安卓手機(jī)作為演示,ISO也是差不多的
軟件下載地址 (需要的朋友及時(shí)下載,鏈接有效期3天。)
注意:要想在電腦上查看手機(jī)攝像頭拍攝的內(nèi)容的在一個(gè)局域網(wǎng)里面(沒有 WIFI 可以使用 熱點(diǎn) )
安裝完打開IP攝像頭服務(wù)器
點(diǎn)擊分享查看IP
查看局域網(wǎng)的IP
用Python的Opencv寫一個(gè)代碼來連接手機(jī)攝像頭
安裝opencv-python
pip install opencv-python
注意
可能安裝庫太慢可以這樣(這里使用的是清華的鏡像)
pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple/
保存的照片在當(dāng)前的py文件同級(jí)目錄下面的img里面
手機(jī)橫著,電腦顯示的也是橫著,反之
# 將圖像旋轉(zhuǎn)90度以豎直顯示 img = cv2.rotate(img, cv2.ROTATE_90_CLOCKWISE) # 5. 旋轉(zhuǎn)圖像
使用
- ESC: 退出界面
- 空格: 保存手機(jī)攝像頭的照片
代碼
import cv2 import os # 創(chuàng)建窗口,設(shè)置為不能改變大小 cv2.namedWindow('camera', cv2.WINDOW_NORMAL) # 1. 修改窗口屬性,允許改變大小 # 攝像頭設(shè)置,這里使用的是網(wǎng)絡(luò)攝像頭的URL video = 'http://admin:admin@192.168.1.103:8081' capture = cv2.VideoCapture(video) # 2. 初始化攝像頭 # 初始化保存圖片的序號(hào) p = 1 # 開始無限循環(huán),直到用戶中斷 while True: success, img = capture.read() # 3. 從攝像頭讀取一幀圖像 if not success: print("無法抓取幀") # 4. 如果讀取失敗,打印錯(cuò)誤信息并退出循環(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毫秒響應(yīng)一次 if key == 27: # 8. 如果按下ESC鍵(ASCII碼為27),退出循環(huán) break elif key == ord(' '): # 9. 如果按下空格鍵(ASCII碼為32),保存圖片 # 保存圖片到當(dāng)前目錄下的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. 更新圖片序號(hào) # 釋放攝像頭資源 capture.release() # 關(guān)閉所有OpenCV創(chuàng)建的窗口 cv2.destroyAllWindows()
注意
video的地址替換為查看局域網(wǎng)的IP時(shí)看到的地址
展示效果
電腦端
手機(jī)拍攝
分辨率低,也就是圖片還是有點(diǎn)模糊
解釋
導(dǎo)入必要的庫
import cv2 import os
首先,導(dǎo)入cv2
模塊(OpenCV庫)用于圖像處理和視頻流操作,以及os
模塊用于文件路徑操作。
創(chuàng)建窗口
cv2.namedWindow('camera', cv2.WINDOW_NORMAL)
創(chuàng)建一個(gè)名為camera
的窗口,并設(shè)置為可以改變大小。
攝像頭設(shè)置
video = 'http://admin:admin@192.168.1.103:8081' capture = cv2.VideoCapture(video)
設(shè)置網(wǎng)絡(luò)攝像頭的URL,并初始化攝像頭對(duì)象。
初始化保存圖片的序號(hào)
p = 1
初始化一個(gè)變量p
用于保存圖片時(shí)的序號(hào)。
主循環(huán)
while True:
開始一個(gè)無限循環(huán),用于持續(xù)捕獲和處理視頻幀。
讀取視頻幀
success, img = capture.read()
從攝像頭捕獲一幀圖像。success
是一個(gè)布爾值,表示是否成功捕獲幀,img
是捕獲到的圖像。
圖像旋轉(zhuǎn)
if not success: print("無法抓取幀") break img = cv2.rotate(img, cv2.ROTATE_90_CLOCKWISE)
如果未能成功捕獲幀,則打印錯(cuò)誤信息并退出循環(huán)。成功捕獲后,將圖像旋轉(zhuǎn)90度以豎直方向顯示。
顯示圖像
cv2.imshow("camera", img)
將旋轉(zhuǎn)后的圖像顯示在之前創(chuàng)建的camera
窗口中。
按鍵處理
key = cv2.waitKey(10)
等待用戶按鍵操作,如果在10毫秒內(nèi)有按鍵則響應(yīng)。
if key == 27: break elif key == ord(' '):
如果用戶按下ESC鍵(ASCII碼為27),則退出循環(huán)。如果按下空格鍵(ASCII碼為32),則保存當(dāng)前幀為圖片。
保存圖片
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)建。生成圖片文件名,并將當(dāng)前幀保存為圖片。打印保存圖片的信息,并更新圖片序號(hào)。
釋放資源
capture.release() cv2.destroyAllWindows()
循環(huán)結(jié)束后,釋放攝像頭資源,并關(guān)閉所有OpenCV創(chuàng)建的窗口。
到此這篇關(guān)于Python 調(diào)用手機(jī)攝像頭的文章就介紹到這了,更多相關(guān)Python 調(diào)用手機(jī)攝像頭內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Python實(shí)現(xiàn)調(diào)用攝像頭拍攝照片
- python通過opencv調(diào)用攝像頭操作實(shí)例分析
- Python+OpenCV圖像處理——打印圖片屬性、設(shè)置存儲(chǔ)路徑、調(diào)用攝像頭
- python調(diào)用攝像頭的示例代碼
- python使用opencv在Windows下調(diào)用攝像頭實(shí)現(xiàn)解析
- python opencv調(diào)用筆記本攝像頭
- python+openCV調(diào)用攝像頭拍攝和處理圖片的實(shí)現(xiàn)
- Python OpenCV調(diào)用攝像頭檢測(cè)人臉并截圖
相關(guān)文章
python里對(duì)list中的整數(shù)求平均并排序
本文主要記述了使用Python將list重點(diǎn)整數(shù)求平均值之后在進(jìn)行排列的過程,并把代碼分享給大家,希望大家能給鼓鼓掌~~~2014-09-09python統(tǒng)計(jì)指定目錄內(nèi)文件的代碼行數(shù)
這篇文章主要介紹了python統(tǒng)計(jì)指定目錄內(nèi)文件的代碼行數(shù)2019-09-09Pytorch教程內(nèi)置模型源碼實(shí)現(xiàn)
本文是關(guān)于Pytorch教程文章,本篇主要為教大家Pytorch內(nèi)置模型源碼實(shí)現(xiàn),有需要的朋友可以借鑒參考下,希望可以有所幫助,祝大家多多進(jìn)步,早日升職加薪2021-09-09Pytorch框架實(shí)現(xiàn)mnist手寫庫識(shí)別(與tensorflow對(duì)比)
這篇文章主要介紹了Pytorch框架實(shí)現(xiàn)mnist手寫庫識(shí)別(與tensorflow對(duì)比),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07Python PyWebIO提升團(tuán)隊(duì)效率使用介紹
這篇文章主要為大家介紹了Python PyWebIO提升團(tuán)隊(duì)效率使用介紹,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01Numpy之random函數(shù)使用學(xué)習(xí)
這篇文章主要介紹了Numpy之random使用學(xué)習(xí),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-01-01