我曾与OpenCV的3.2 Python3和SBC OXU4。 我有一个真正的5MPx网络摄像头连接到SBC。 我想从这个相机2592×1944分辨率照片拍摄。 如果我使用的奶酪,我可以拍照这项决议。 我可以保存命令行程序画面streamer -t 4 -r 4 -s 2592x1944 -o b0.jpeg
但是,当我拍照,像这样OpenCV3.2:
#!/usr/bin/env python3
import cv2
import os
import time
capture1 = cv2.VideoCapture(2)
if capture1.isOpened():
capture1.set(3, 2592)
capture1.set(4, 1944)
s, img = capture1.read()
if not img.all():
cv2.imwrite('test1.jpg', img)
print('image done!')
else:
print('cant open camera')
我会看到1920×1080照片分辨率。 此外,我已经检查用v412特异性CTL
v4l2-ctl --list-formats-ext
ioctl: VIDIOC_ENUM_FMT
Index : 0
Type : Video Capture
Pixel Format: 'YUYV'
Name : YUYV 4:2:2
Size: Discrete 2592x1944
Interval: Discrete 0.267s (3.750 fps)
Size: Discrete 1920x1080
Interval: Discrete 0.133s (7.500 fps)
Size: Discrete 1280x960
Interval: Discrete 0.067s (15.000 fps)
Size: Discrete 1280x720
Interval: Discrete 0.067s (15.000 fps)
Size: Discrete 640x480
Interval: Discrete 0.017s (60.000 fps)
Interval: Discrete 0.033s (30.000 fps)
Size: Discrete 320x240
Interval: Discrete 0.008s (120.000 fps)
Interval: Discrete 0.011s (90.000 fps)
Interval: Discrete 0.017s (60.000 fps)
Interval: Discrete 0.033s (30.000 fps)
Index : 1
Type : Video Capture
Pixel Format: 'MJPG' (compressed)
Name : Motion-JPEG
Size: Discrete 1920x1080
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Size: Discrete 1280x720
Interval: Discrete 0.022s (45.000 fps)
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.067s (15.000 fps)
Size: Discrete 640x480
Interval: Discrete 0.033s (30.000 fps)
Interval: Discrete 0.067s (15.000 fps)
当前相机设置
v4l2-ctl --all
Driver Info (not using libv4l2):
Driver name : uvcvideo
Card type : oCam
Bus info : usb-12110000.usb-1
Driver version: 4.14.37
Capabilities : 0x84200001
Video Capture
Streaming
Extended Pix Format
Device Capabilities
Device Caps : 0x04200001
Video Capture
Streaming
Extended Pix Format
Priority: 2
Video input : 0 (Camera 1: ok)
Format Video Capture:
Width/Height : 1920/1080
Pixel Format : 'MJPG'
Field : None
Bytes per Line : 0
Size Image : 10077696
Colorspace : Default
Transfer Function : Default (maps to Rec. 709)
YCbCr/HSV Encoding: Default (maps to ITU-R 601)
Quantization : Default (maps to Full Range)
Flags :
Crop Capability Video Capture:
Bounds : Left 0, Top 0, Width 1920, Height 1080
Default : Left 0, Top 0, Width 1920, Height 1080
Pixel Aspect: 1/1
Selection: crop_default, Left 0, Top 0, Width 1920, Height 1080
Selection: crop_bounds, Left 0, Top 0, Width 1920, Height 1080
Streaming Parameters Video Capture:
Capabilities : timeperframe
Frames per second: 30.000 (30/1)
Read buffers : 0
事实上,我看到我们的默认设置为1920X1080 MJPG。 从那以后,我试着用v4l2-ctl --set-fmt-video=width=2592,height=1936,pixelformat=YUYV
,并v4l2-ctl --all
我看到PARAMS是套到:
Driver name : uvcvideo
Card type : oCam
Bus info : usb-12110000.usb-1
Driver version: 4.14.37
Capabilities : 0x84200001
Video Capture
Streaming
Extended Pix Format
Device Capabilities
Device Caps : 0x04200001
Video Capture
Streaming
Extended Pix Format
Priority: 2
Video input : 0 (Camera 1: ok)
Format Video Capture:
Width/Height : 2592/1944
Pixel Format : 'YUYV'
Field : None
Bytes per Line : 5184
Size Image : 10077696
Colorspace : Default
Transfer Function : Default (maps to Rec. 709)
YCbCr/HSV Encoding: Default (maps to ITU-R 601)
Quantization : Default (maps to Limited Range)
Flags
但是,当我开始我的脚本这个PARAMS重置和我拿1920×1080的图像,看到v4l2-ctl --all
其MJPG 1920×1080。 正如我理解cap=cv2.VideoCapture(0)
复位V4L2装置的设置,以加工前默认值。 我调默认设置如何来YUYV 2952x1944与我可以带一个形象呢? 也是为什么cap.set(cv2.CAP_PROP_FRAME_WIDTH)
不起作用? 因为OpenCV的标识像MJPG 1920最大分辨率?