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.
The video node for MIPI camera is /dev/video50
.
Follow the steps below to install Gstreamer Encoder Plugin:
sudo apt update sudo apt install gstreamer-aml
Record Video:
gst-launch-1.0 -e v4l2src device=/dev/video50 io-mode=mmap num-buffers=300 ! video/x-raw,format=NV21,width=3840,height=2160,framerate=30/1 ! amlvenc bitrate=8000 ! h264parse ! qtmux ! filesink location=test_50.mp4
Follow the steps below to install OpenCV:
sudo apt update sudo apt install libopencv-dev python3-opencv
Get Frame via V4l2:
#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, 3840); capture.set(CAP_PROP_FRAME_HEIGHT, 2160); 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; }
Get Frame via Gstreamer:
#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 gstformat = "NV12"; string gstfile = "v4l2src device=" + str + " ! video/x-raw,format=" + gstformat + ",width=3840,height=2160,framerate=30/1 ! videoconvert ! appsink"; VideoCapture capture(gstfile); 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