Hello,
One of our VEYE-MIPI-IMX385 randomly flip the image upside down. Using the I2C utility, I could flip it back again.
What could be the cause of this issue. We are testing 4 units and so far, one unit keep doing this about 5% of the time.
Please help.
Posts made by thn
-
VEYE-MIPI-IMX385 randomly flip the image upside down
-
RE: Is there any plan to support libcamera?
Hello,
What should I do with these dmesg output?
[ 8.850954] veyecam2m: loading out-of-tree module taints kernel.
[ 9.228770] veyecam2m 10-003b: camera id is veyecam2m
[ 9.230589] veyecam2m 10-003b: sensor is IMX385
[ 9.230616] veyecam2m 10-003b: board type is ONE board
[ 9.231135] veyecam2m 10-003b: Consider updating driver veyecam2m to match on endpoints
[ 9.231782] veyecam2m 10-003b: veyecam2m camera probed -
RE: Is there any plan to support libcamera?
@veye_xumm
I tried the cable that came in the retail package we purchased from Amazon. When I plugged the camera into the Raspberry Pi IO board with a CM4, the camera did not show up at /dev/video0 at all. This is using the very same MicroSD card to boot the Raspberry Pi 4.
I must be missing something. -
RE: Is there any plan to support libcamera?
@veye_xumm
A cable question, I want to test out the Raspberry Pi IO board with a CM4, but this IO board come with a 22 pins header connection instead of the 15 pin as in your camera.
Could you advise a way to connect the 22 pin header into your camera? Which converter or cable should we use?
Thanks, -
RE: Is there any plan to support libcamera?
@veye_xumm
That sounds like more works than just take video0 output and convert to YUV420 or BGR directly.
Also can we use two cameras? -
RE: Is there any plan to support libcamera?
@veye_xumm
The obvious advantage for support libcamera is that the app can be compatible with other cameras that support libcamera. This could become a popular choice in the future. But who know!!!Right now I can use v4l2 API to access the camera /dev/video0 with UYVY format and then convert to BGR for OpenCV processing.
I check the format for /dev/video12 with
v4l2-ctl --device /dev/video12 --list-formats
The result is:
ioctl: VIDIOC_ENUM_FMT
Type: Video Capture Multiplanar[0]: 'YUYV' (YUYV 4:2:2) [1]: 'YVYU' (YVYU 4:2:2) [2]: 'VYUY' (VYUY 4:2:2) [3]: 'UYVY' (UYVY 4:2:2) [4]: 'YU12' (Planar YUV 4:2:0) [5]: 'YV12' (Planar YVU 4:2:0) [6]: 'RGB3' (24-bit RGB 8-8-8) [7]: 'BGR3' (24-bit BGR 8-8-8) [8]: 'AB24' (32-bit RGBA 8-8-8-8) [9]: 'BGR4' (32-bit BGRA/X 8-8-8-8) [10]: 'RGBP' (16-bit RGB 5-6-5) [11]: 'NV12' (Y/CbCr 4:2:0) [12]: 'NV21' (Y/CrCb 4:2:0)
So should I access /dev/video12 in my v4l2 app and request YUV 4:2:0 or even BGR3? Will your current driver support that?
Thanks, -
RE: Is there any plan to support libcamera?
@veye_xumm
Please keep me posted if you have any new libcamera code that I could help testing them out.
Thanks, -
RE: Is there any plan to support libcamera?
@veye_xumm
Hi again, finally I figured out how to convert the V4L2 frame buffer into OpenCV BGR Mat. Here is an example code in case anyone want to know. I uses COLOR_YUV2BGR_YUYV because I already used the i2c command to set the camera to YUYV.
The problem with this code is that the function cvtColor is very CPU intensive and it will bring the frame rate down to about 20 FPS. I hope there is a better way to use this camera in the Pi OS 64 bit mode.static void process_image(const void *p, int size)
{
int width=VCOS_ALIGN_UP(1920, 32);
int height=VCOS_ALIGN_UP(1080, 16);
Mat yuv = Mat(height, width, CV_8UC2, (uint8_t *)p, width);
cvtColor(yuv, yuv, COLOR_YUV2BGR_YUYV);
imshow("Display", yuv);
waitKey(1);
} -
RE: Is there any plan to support libcamera?
@veye_xumm
I will appreciate if you could give me an example of how to covert the V4L2 buffer into the OpenCV Mat BGR buffer. This way I could use your camera in my project.
Thanks, -
RE: Is there any plan to support libcamera?
@veye_xumm said in Is there any plan to support libcamera?:
v4l2-ctl --list-formats-ext
Yes I use V4L2 API to access the IMX385 camera. And here is the formats command:
v4l2-ctl --list-formats --device /dev/video0
ioctl: VIDIOC_ENUM_FMT
Type: Video Capture[0]: 'YUYV' (YUYV 4:2:2) [1]: 'UYVY' (UYVY 4:2:2) [2]: 'YVYU' (YVYU 4:2:2) [3]: 'VYUY' (VYUY 4:2:2) [4]: 'RGBP' (16-bit RGB 5-6-5) [5]: 'RGBR' (16-bit RGB 5-6-5 BE) [6]: 'RGBO' (16-bit A/XRGB 1-5-5-5) [7]: 'RGBQ' (16-bit A/XRGB 1-5-5-5 BE) [8]: 'RGB3' (24-bit RGB 8-8-8) [9]: 'BGR3' (24-bit BGR 8-8-8) [10]: 'RGB4' (32-bit A/XRGB 8-8-8-8) [11]: 'BA81' (8-bit Bayer BGBG/GRGR) [12]: 'GBRG' (8-bit Bayer GBGB/RGRG) [13]: 'GRBG' (8-bit Bayer GRGR/BGBG) [14]: 'RGGB' (8-bit Bayer RGRG/GBGB) [15]: 'pBAA' (10-bit Bayer BGBG/GRGR Packed) [16]: 'BG10' (10-bit Bayer BGBG/GRGR) [17]: 'pGAA' (10-bit Bayer GBGB/RGRG Packed) [18]: 'GB10' (10-bit Bayer GBGB/RGRG) [19]: 'pgAA' (10-bit Bayer GRGR/BGBG Packed) [20]: 'BA10' (10-bit Bayer GRGR/BGBG) [21]: 'pRAA' (10-bit Bayer RGRG/GBGB Packed) [22]: 'RG10' (10-bit Bayer RGRG/GBGB) [23]: 'pBCC' (12-bit Bayer BGBG/GRGR Packed) [24]: 'BG12' (12-bit Bayer BGBG/GRGR) [25]: 'pGCC' (12-bit Bayer GBGB/RGRG Packed) [26]: 'GB12' (12-bit Bayer GBGB/RGRG) [27]: 'pgCC' (12-bit Bayer GRGR/BGBG Packed) [28]: 'BA12' (12-bit Bayer GRGR/BGBG) [29]: 'pRCC' (12-bit Bayer RGRG/GBGB Packed) [30]: 'RG12' (12-bit Bayer RGRG/GBGB) [31]: 'pBEE' (14-bit Bayer BGBG/GRGR Packed) [32]: 'BG14' (14-bit Bayer BGBG/GRGR) [33]: 'pGEE' (14-bit Bayer GBGB/RGRG Packed) [34]: 'GB14' (14-bit Bayer GBGB/RGRG) [35]: 'pgEE' (14-bit Bayer GRGR/BGBG Packed) [36]: 'GR14' (14-bit Bayer GRGR/BGBG) [37]: 'pREE' (14-bit Bayer RGRG/GBGB Packed) [38]: 'RG14' (14-bit Bayer RGRG/GBGB) [39]: 'GREY' (8-bit Greyscale) [40]: 'Y10P' (10-bit Greyscale (MIPI Packed)) [41]: 'Y10 ' (10-bit Greyscale) [42]: 'Y12P' (12-bit Greyscale (MIPI Packed)) [43]: 'Y12 ' (12-bit Greyscale) [44]: 'Y14P' (14-bit Greyscale (MIPI Packed)) [45]: 'Y14 ' (14-bit Greyscale)
-
RE: Is there any plan to support libcamera?
@veye_xumm
Hello, I am very close to get the V4L2 API to work. After capture the frame and display with opencv I got a video like thisIt looks like I am having a pixel alignment issue and I hope you could have some suggestion. Here is the portion of the C++ code that I used to convert into OpenCV Mat:
////
static void process_image(const void *p, int size)
{
int width=VCOS_ALIGN_UP(1920, 32);
int height=VCOS_ALIGN_UP(1080, 16);
Mat image = Mat((int)(height * 3/2), width, CV_8U, (uint8_t *)p, width);
cvtColor(image, image, COLOR_YUV2BGR_I420);
imshow("T6 Display", image);
waitKey(1);
} -
RE: Is there any plan to support libcamera?
@veye_xumm said in Is there any plan to support libcamera?:
@thn
We don't offer a ready-made demo right now, but I can offer a suggestion.Since our module does not need to use the isp in the Raspberry Pi, there is no need to call libcamera.
libcamera-app is a useful toolkit to mimic this program and write a program that uses the v4l2 video source.Actually we only need to capture the video frame do some processing with opencv and display it but it has to be on 64 bit platform. It would be best if your camera driver will support the libcamera. Right now the only way I can do that with your camera is to use opencv capture with gstreamer v4l2src plugin which is so slow and the delay is very long. Not acceptable for our application. We need realtime frame capture.
I have tried a simple V4L2 capture directly from linuxtv.org but it failed to start the stream. https://linuxtv.org/downloads/v4l-dvb-apis-new/userspace-api/v4l/capture.c.html
I am fine with using i2c to control the ISP I just need to capture the frames in realtime on 64-bit environment just like the veye-raspipreview code.Thanks,
-
RE: Is there any plan to support libcamera?
@veye_xumm said in Is there any plan to support libcamera?:
I have a follow up question. Is it possible to run veye_raspipreview under Raspberry Pi OS 64 bit?
No, legacy mode can not run on 64 bit OS.
If my application requires to be on Pi OS 64 bit, what would your recommendation for the most efficient way to access the IMX385 camera video frames in realtime. gstreamer is too slow. Is there an example in your toolkits?
Thanks, -
RE: VEYE-MIPI-IMX385
@veye_xumm said in VEYE-MIPI-IMX385:
We recommend you to use lagcy mode. Another way is to refer to libcamera-app and write a PREVIEW program.
Is there support for legacy mode under bullseye 64 bit?
Thanks, -
RE: Is there any plan to support libcamera?
Hello,
I have a follow up question. Is it possible to run veye_raspipreview under Raspberry Pi OS 64 bit?
Thanks, -
RE: VEYE-MIPI-IMX385
Hello,
Thanks for your reply. I am not sure how to write a preview based on libcamera-app without the libcamera support from your driver.
Thanks, -
RE: Is there any plan to support libcamera?
I think libcamera supports GPU and it is more efficient than gstreamer on the Pi platform.
I will be happy to test out any new drivers that you have. Please contact me if you need helps testing.
Thanks, -
Is there any plan to support libcamera?
Hello,
Is there any plan to support libcamera for MIPI-IMX385 camera? If there is any beta test that I could join, I will be more than happy to be your tester.
Thanks, -
VEYE-MIPI-IMX385
Hello,
I just received a VEYE-MIPI-IMX385 module from your company. I got it from amazon here https://www.amazon.com/VEYE-MIPI-IMX385-Raspberry-Jetson-XavierNX-IMX385/dp/B09CNHLTJH/ref=sr_1_3?crid=1WOB69X1M8TDP&keywords=imx385&qid=1654709601&sprefix=imx385%2Caps%2C178&sr=8-3&th=1First questions:
On the Amazon description, it says "1/2.8 inch 2 Mega sensor IMX327" so is it IMX385 or IMX327?Second question:
After installing the driver, everything works, thank you. However when I did the FPS test using this gstreamer command:
gst-launch-1.0 v4l2src device=/dev/video0 ! "video/x-raw,format=(string)UYVY, width=(int)1920, height=(int)1080,framerate=(fraction)30/1" ! videoconvert ! fpsdisplaysink video-sink=fakesink -vI can only get on average 28.3 FPS. Never 30FPS.
I am using a Raspberry Pi 4 with 8 gig of RAM.
What can I do to get 30FPS?Thanks,