MacOS下Python3+OpenCV调用热成像摄像头失败求助
问题描述
尝试用OpenCV调用ACEGMET TI256I热成像摄像头时触发异常,但默认摄像头可正常工作,PhotoBooth能查看热成像画面,ffmpeg也可通过以下命令正常调用该摄像头:
ffmpeg -f avfoundation -framerate 30 -i "1" -target pal-vcd ./test.mpg
报错信息
ERROR: [ERROR:0@0.108] global cap.cpp:323 open VIDEOIO(AVFOUNDATION): raised unknown C++ exception!
环境详情
- 设备:2023款MacBook Pro
- 系统:MacOS Sonoma 14.1
- Python版本:3.9.6
- OpenCV版本:4.8.1
- 摄像头:ACEGMET TI256I(USB-C连接)
测试代码
import cv2 cap = cv2.VideoCapture(0) if not cap.isOpened(): print('Cannot open camera') exit() while True: ret, frame = cap.read() if not ret: print('Error reading frame. Exiting ...') break cv2.imshow('Webcam Frame', frame) if cv2.waitKey(1) == ord('q'): break cap.release() cv2.destroyAllWindows()
解决思路
1. 指定正确摄像头索引并显式设置后端
你的ffmpeg命令使用的摄像头索引是1,但测试代码里用的是对应默认摄像头的0,先尝试指定正确索引,同时显式声明AVFoundation后端:
import cv2 cap = cv2.VideoCapture(1, cv2.CAP_AVFOUNDATION) if not cap.isOpened(): print('Cannot open camera') exit() # 匹配ffmpeg参数设置帧率和分辨率 cap.set(cv2.CAP_PROP_FPS, 30) cap.set(cv2.CAP_PROP_FRAME_WIDTH, 640) cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 480) while True: ret, frame = cap.read() if not ret: print('Error reading frame. Exiting ...') break cv2.imshow('Thermal Frame', frame) if cv2.waitKey(1) == ord('q'): break cap.release() cv2.destroyAllWindows()
2. 排查OpenCV与系统兼容性
MacOS Sonoma的AVFoundation框架可能和OpenCV 4.8.1存在适配问题,可尝试:
- 在当前系统环境下重新编译OpenCV,确保启用AVFoundation支持
- 切换OpenCV版本,测试4.5.x或4.9.x版本
3. 绕过OpenCV直接调用ffmpeg获取帧
如果上述方法无效,可通过subprocess调用ffmpeg,将摄像头输出转为OpenCV可处理的格式:
import cv2 import subprocess import numpy as np command = [ 'ffmpeg', '-f', 'avfoundation', '-framerate', '30', '-i', '1', '-pix_fmt', 'bgr24', '-vcodec', 'rawvideo', '-an', '-sn', '-' ] proc = subprocess.Popen(command, stdout=subprocess.PIPE, bufsize=10**8) while True: raw_frame = proc.stdout.read(640*480*3) if not raw_frame: break frame = np.frombuffer(raw_frame, dtype=np.uint8).reshape((480, 640, 3)) cv2.imshow('Thermal Frame', frame) if cv2.waitKey(1) == ord('q'): break proc.kill() cv2.destroyAllWindows()
内容的提问来源于stack exchange,提问作者Razmik Tovmasyan
相关产品推荐
相关产品推荐

