Python?如何調(diào)用手機(jī)攝像頭
Python 調(diào)用手機(jī)攝像頭
在手機(jī)上安裝軟件
這里以安卓手機(jī)作為演示,ISO也是差不多的
軟件下載地址 (需要的朋友及時(shí)下載,鏈接有效期3天。)
注意:要想在電腦上查看手機(jī)攝像頭拍攝的內(nèi)容的在一個(gè)局域網(wǎng)里面(沒(méi)有 WIFI 可以使用 熱點(diǎn) )
安裝完打開(kāi)IP攝像頭服務(wù)器

點(diǎn)擊分享查看IP

查看局域網(wǎng)的IP

用Python的Opencv寫(xiě)一個(gè)代碼來(lái)連接手機(jī)攝像頭
安裝opencv-python
pip install opencv-python
注意
可能安裝庫(kù)太慢可以這樣(這里使用的是清華的鏡像)
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
# 開(kāi)始無(wú)限循環(huán),直到用戶(hù)中斷
while True:
success, img = capture.read() # 3. 從攝像頭讀取一幀圖像
if not success:
print("無(wú)法抓取幀") # 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. 等待用戶(hù)按鍵,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)入必要的庫(kù)
import cv2 import os
首先,導(dǎo)入cv2模塊(OpenCV庫(kù))用于圖像處理和視頻流操作,以及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:
開(kāi)始一個(gè)無(wú)限循環(huán),用于持續(xù)捕獲和處理視頻幀。
讀取視頻幀
success, img = capture.read()
從攝像頭捕獲一幀圖像。success是一個(gè)布爾值,表示是否成功捕獲幀,img是捕獲到的圖像。
圖像旋轉(zhuǎn)
if not success:
print("無(wú)法抓取幀")
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)
等待用戶(hù)按鍵操作,如果在10毫秒內(nèi)有按鍵則響應(yīng)。
if key == 27:
break
elif key == ord(' '):如果用戶(hù)按下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通過(guò)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時(shí)間和日期庫(kù)的實(shí)現(xiàn)
這篇文章主要介紹了Python時(shí)間和日期庫(kù)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03
Python輕松實(shí)現(xiàn)圖片文字提取的高效技巧分享
隨著數(shù)字化轉(zhuǎn)型的加速,從圖片中提取文字(OCR,光學(xué)字符識(shí)別)的需求日益增長(zhǎng),Python憑借其豐富的庫(kù)和易用性,成為實(shí)現(xiàn)OCR的首選工具之一,本文將深入探討如何利用Python從圖片中提取文字,涵蓋基本原理、常用工具、代碼實(shí)現(xiàn)及優(yōu)化技巧,需要的朋友可以參考下2025-07-07
Python使用ConfigParser解析INI配置文件的完全指南
配置文件提供了一種結(jié)構(gòu)化的方式來(lái)管理應(yīng)用程序設(shè)置,比單獨(dú)使用環(huán)境變量更有組織性,INI文件采用簡(jiǎn)單的基于部分的格式,既易于閱讀又易于解析,Python內(nèi)置的configparser模塊使處理這些文件變得簡(jiǎn)單而強(qiáng)大,需要的朋友可以參考下2025-10-10
python軟件測(cè)試Jmeter性能測(cè)試JDBC Request(結(jié)合數(shù)據(jù)庫(kù))的使用詳解
這篇文章主要介紹了python軟件測(cè)試Jmeter性能測(cè)試JDBC Request(結(jié)合數(shù)據(jù)庫(kù))的使用詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01
Matplotlib直方圖繪制中的參數(shù)bins和rwidth的實(shí)現(xiàn)
本文主要介紹了Matplotlib直方圖繪制中的參數(shù)bins和rwidth的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-02-02
Python一直報(bào)錯(cuò)SyntaxError:invalid?syntax的解決辦法
SyntaxError: invalid syntax 這個(gè)報(bào)錯(cuò)經(jīng)常遇見(jiàn),但是總感覺(jué)自己的代碼沒(méi)有問(wèn)題,根據(jù)報(bào)錯(cuò)提示的行也找不到錯(cuò)誤,這些情況以及解決方法都有哪些呢?這篇文章主要給大家介紹了關(guān)于Python一直報(bào)錯(cuò)SyntaxError:invalid?syntax的解決辦法,需要的朋友可以參考下2022-09-09
Python PyQt5實(shí)現(xiàn)的簡(jiǎn)易計(jì)算器功能示例
這篇文章主要介紹了Python PyQt5實(shí)現(xiàn)的簡(jiǎn)易計(jì)算器功能,涉及Python PyQt5事件響應(yīng)及數(shù)學(xué)運(yùn)算等相關(guān)操作技巧,需要的朋友可以參考下2017-08-08
Python推導(dǎo)式簡(jiǎn)單示例【列表推導(dǎo)式、字典推導(dǎo)式與集合推導(dǎo)式】
這篇文章主要介紹了Python推導(dǎo)式,結(jié)合簡(jiǎn)單實(shí)例形式分析了Python列表推導(dǎo)式、字典推導(dǎo)式與集合推導(dǎo)式基本使用方法,需要的朋友可以參考下2018-12-12

