如何使用Python结合OpenCV获取指定尺寸的相机图像?
如何用OpenCV捕获指定尺寸的图像
你可以通过两种方法实现捕获(250,200)尺寸的图像:
方法一:直接设置相机捕获分辨率
通过cv2.VideoCapture的set()方法指定相机的输出宽度和高度,对应参数为cv2.CAP_PROP_FRAME_WIDTH(宽度)和cv2.CAP_PROP_FRAME_HEIGHT(高度)。不过要注意,部分相机可能不支持任意自定义分辨率,建议先确认你的相机支持的分辨率列表。
修改后的代码如下:
import cv2 i = 0 cap = cv2.VideoCapture(0) # 设置捕获的宽度和高度 cap.set(cv2.CAP_PROP_FRAME_WIDTH, 250) cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 200) while True: ret, frame = cap.read() if not ret: break # 捕获失败时退出循环 frame = cv2.cvtColor(frame, 0) cv2.imshow("frame", frame) if cv2.waitKey(1) & 0xFF == ord('q'): cv2.imwrite(r"C:\Users\naman.sharma\Desktop\Image_dataset\nm_result_{}.png".format(i), frame) break cap.release() cv2.destroyAllWindows()
方法二:捕获后缩放图像
如果相机不支持设置目标分辨率,可以在捕获帧之后,用cv2.resize()强制将图像缩放到指定尺寸。这种方法兼容性更强,不受相机硬件限制。
修改后的代码如下:
import cv2 i = 0 cap = cv2.VideoCapture(0) while True: ret, frame = cap.read() if not ret: break # 捕获失败时退出循环 # 将图像缩放到(250,200),注意参数顺序是(width, height) frame = cv2.resize(frame, (250, 200)) frame = cv2.cvtColor(frame, 0) cv2.imshow("frame", frame) if cv2.waitKey(1) & 0xFF == ord('q'): cv2.imwrite(r"C:\Users\naman.sharma\Desktop\Image_dataset\nm_result_{}.png".format(i), frame) break cap.release() cv2.destroyAllWindows()
两种方法对比
- 方法一:直接从相机获取目标尺寸,处理效率更高,适合相机支持对应分辨率的场景。
- 方法二:通过软件缩放实现,兼容性更好,适合相机不支持目标分辨率的情况。
内容的提问来源于stack exchange,提问作者Naman
相关产品推荐
相关产品推荐

