当前位置:   article > 正文

C++ OpenCV读取mipi摄像头图像数据_mipi c++

mipi c++

环境:Linux + OpenCV

OpenCV必须是支持有Gstreamer支持的,没有的话需要重新编译,添加WITH_GSTREAMER参数进行编译
可以在程序中通过 cout<<cv::getBuildInformation()<<endl;输出OpenCV信息查看是否支持Gstreamer

1、查看设备信息

  • 列出所有设备(接口)v4l2-ctl --list-devices
  • 查看某一个设备的具体信息,数据接口格式 v4l2-ctl -d /dev/video0 -all
Driver Info:
	Driver name      : rkcif
	Card type        : rkcif
	Bus info         : platform:rkcif-mipi-lvds2
	Driver version   : 5.10.110
	Capabilities     : 0x84201000
		Video Capture Multiplanar
		Streaming
		Extended Pix Format
		Device Capabilities
	Device Caps      : 0x04201000
		Video Capture Multiplanar
		Streaming
		Extended Pix Format
Media Driver Info:
	Driver name      : rkcif
	Model            : rkcif-mipi-lvds2
	Serial           : 
	Bus info         : 
	Media version    : 5.10.110
	Hardware revision: 0x00000000 (0)
	Driver version   : 5.10.110
Interface Info:
	ID               : 0x03000002
	Type             : V4L Video
Entity Info:
	ID               : 0x00000001 (1)
	Name             : stream_cif_mipi_id0
	Function         : V4L2 I/O
	Pad 0x01000004   : 0: Sink
...
Priority: 2
Format Video Capture Multiplanar:
	Width/Height      : 1920/1080  # 后续读取摄像头的时候用的上
	Pixel Format      : 'NV12' (Y/CbCr 4:2:0) # 后续读取摄像头的时候用的上
	Field             : None
	Number of planes  : 1
	Flags             : 
	Colorspace        : Rec. 709
	Transfer Function : Rec. 709
	YCbCr/HSV Encoding: Rec. 709
	Quantization      : Default
	Plane 0           :
	   Bytes per Line : 1920
	   Size Image     : 3110400
Selection Video Capture: crop, Left 0, Top 0, Width 1920, Height 1080, Flags: 
Selection Video Capture: crop_bounds, Left 0, Top 0, Width 1920, Height 1080, Flags: 
Selection Video Output: crop, Left 0, Top 0, Width 1920, Height 1080, Flags: 
Selection Video Output: crop_bounds, Left 0, Top 0, Width 1920, Height 1080, Flags: 

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50

2、读图
普通读取视频文件的OpenCV代码

cv::VideoCapture cap;
cap.open("xxx.mp4");

Mat frame;
while(cap.read(frame))
{
	//处理图像 frame
}
cap.release();
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

通过Gstreamer读取mipi摄像头时需要改open里的参数如下:
其中摄像头的参数需要自己根据摄像头参数修改(设备信息中看到的format等等)

cv::VideoCapture cap;
cap.open("v4l2src device=/dev/video0 ! video/x-raw, format=NV12, width=640, height=480, framerate=30/1 ! videoconvert ! appsink",cv::CAP_GSTREAMER);

  • 1
  • 2
  • 3

在系统终端中调用摄像头看图像可以直接使用下面的命令:
gst-launch-1.0 v4l2src device=/dev/video0 io-mode=4 ! queue ! video/x-raw,format=NV12,width=1920,height=1080,framerate=30/1 ! glimagesink
也可以预先测试gstreamer和摄像头是否正常运行,不过在代码中需要使用cpp代码中给出的形式

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/天景科技苑/article/detail/819614
推荐阅读
相关标签
  

闽ICP备14008679号