====== OS08A10 MIPI Camera ====== ===== Introduction ===== This document mainly introduces [[https://www.khadas.com/product-page/os08a10-8mp-camera | OS08A10 MIPI Camera]]. The first part of the document describes how to connect. The second part introduces how to use it under Ubuntu. The third part introduces how to use it under Android. ===== Hardware Connection ===== The reverse connection will burn the camera, please check the connection of the picture carefully before connecting. {{/products/sbc/common/accessories/docs-vim3-camera-os8a10.png?600|docs-vim3-camera-os8a10}} ===== For 5.15 kernel ===== Please check ===== For 4.9 kernel ===== ==== Guvcview ==== The desktop version has ''Guvcview'' pre-installed, find and open this application in the application list. {{/products/sbc/common/accessories/mipi-guvcview-icon.png|mipi-guvcview-icon}} The name of the MIPI camera is ''Juno R2''. {{/products/sbc/common/accessories/mipi-guvcview-setting.png?600|mipi-guvcview-setting}} The resolution is set to ''1920x1080'' and the RGB format is ''BGR3-BGR3''. {{/products/sbc/common/accessories/mipi-guvcview-seccess.png?600|mipi-guvcview-seccess}} After the setting is successful, you can use the camera normally. ==== Command Line ==== === Control IR-Cut via V4L2 === The test needs to be conducted in the framebuffer mode, and switch to the framebuffer mode through the keyboard combination of ''Ctrl''+''Alt''+''F1''. == Disable status == ```shell $ v4l2_test -c 1 -p 0 -F 0 -f 0 -D 0 -R 1 -r 2 -d 2 -N 1000 -n 800 -w 0 -e 1 -I 0 -b /dev/fb0 -v /dev/video0 ``` == Enable status == ```shell $ v4l2_test -c 1 -p 0 -F 0 -f 0 -D 0 -R 1 -r 2 -d 2 -N 1000 -n 800 -w 0 -e 1 -I 1 -b /dev/fb0 -v /dev/video0 ``` === Record Video via Gstreamer === ```shell $ gst-launch-1.0 v4l2src name=vsrc device=/dev/video0 ! video/x-raw,width=1920,height=1080,framerate=60/1,format=RGB ! filesink location=.//test.rgb ``` The recorded video is saved in ''test.rgb''. ==== Demo Source Code ==== In addition to this, you can also test the camera via program. === Install Dependencies === ```shell sudo apt install libopencv-dev python3-opencv ``` === Python === ```python mipi-camera.py import cv2 if __name__ == '__main__': val = True cap = cv2.VideoCapture(0) cap.set(cv2.CAP_PROP_FRAME_WIDTH, 1920) cap.set(cv2.CAP_PROP_FRAME_HEIGHT, 1080) fourcc = cv2.VideoWriter_fourcc(*'XVID') out = cv2.VideoWriter("./test.avi", fourcc, 20.0, (640, 480), True) while val is True: ret, frame = cap.read() cv2.cvtColor(frame,cv2.COLOR_RGB2BGR) if frame is None: break else: out.write(frame) cv2.imshow("video", frame) k = cv2.waitKey(1) & 0xFF if k == 27: break cap.release() out.release() ``` Please modify the number of the open camera according to the camera node. ==== C++ ==== ```c++ mipi-camera.cpp #include #include #include #include #include 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)); 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 == ```shell $ gcc -o mipi mipi.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 ``` == Run == ```shell $ ./mipi /dev/videoX ``` ===== See Also ===== * [[pp>os08a10-8mp-camera|Buy OS08A10 8MP Camera]] * [[dl>products/add-ons/os08a10/|OS08A10 Hardware Documentations]]