This is an old revision of the document!
This document mainly introduces the usage of IMX415 MIPI Camera.
The reverse connection will damage the camera, please check the connection of the picture carefully before connecting.
Please follow the documentation to upgrade your system to latest version.
You can find the video node from the table below.
Video Node | |
---|---|
CAM1 | /dev/video33 |
CAM2 | /dev/video24 |
CAM3 | /dev/video42 |
gst-launch-1.0 v4l2src device=/dev/video50 io-mode=mmap num-buffers=300 ! video/x-raw,format=NV12 ! amlvenc bitrate=8000 ! h264parse ! qtmux ! filesink location=test_50.mp4
sudo apt update sudo apt install libopencv-dev python3-opencv
#include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> #include <opencv2/core/core.hpp> #include <iostream> #include <string> using namespace cv; using namespace std; int main(int argc, char** argv) { int count=100; string str = argv[1]; string res=str.substr(10); VideoCapture capture(stoi(res), CAP_V4L2); capture.set(CAP_PROP_FOURCC, VideoWriter::fourcc('U','Y','V','Y')); capture.set(CAP_PROP_FRAME_WIDTH, 1920); capture.set(CAP_PROP_FRAME_HEIGHT, 1080); while (count) { Mat frame; capture >> frame; if (frame.empty()) { break; } int h = frame.rows; int w = frame.cols; const char *name = "video"; namedWindow(name, 0); imshow(name, frame); waitKey(30); count--; } return 0; }
Compile:
gcc -o mipi mipi-camera.cpp -lopencv_imgproc -lopencv_core -lopencv_videoio -lopencv_imgcodecs -lopencv_highgui -std=c++11 -std=gnu++11 -Wall -std=c++11 -lstdc++ -I/usr/include/opencv4
Test:
./mipi /dev/video50
sudo apt update sudo apt install v4l-utils
Here we take CAM1
as an example to capture frame with v4l-utils
.
v4l2-ctl -d /dev/video33 --set-fmt-video=width=3840,height=2160,pixelformat=NV12 --stream-mmap=3 --stream-skip=3 --stream-to=/tmp/data33.yuv --stream-count=1 --stream-poll
It will capture a 3840×2160 NV12
format frame to file /tmp/data33.yuv
.
Preview the file:
$ ffplay -f rawvideo -pixel_format nv12 -video_size 3840x2160 /tmp/data33.yuv