Code: Select all
Linux luckfox 5.10.160 #2 Thu Nov 28 14:03:14 CST 2024 armv7l GNU/Linux
Code: Select all
[root@luckfox root]# cat /proc/device-tree/model
Luckfox Pico Ultra W
二、现象:
使用opencv-mobile抓图,一开始可以正常抓取,持续一段时间之后,抓图会报错:
opencv-mobile打印:
Code: Select all
devpath = /dev/video11
driver = rkisp_v7
card = rkisp_mainpath
bus_info = platform:rkisp-vir0
version = 20500
capabilities = 84201000
device_caps = 4201000
fmt = UYVY 4:2:2 59565955
fmt = Y/CbCr 4:2:2 3631564e
fmt = Y/CrCb 4:2:2 3136564e
fmt = Y/CrCb 4:2:0 3132564e
size = 32 x 32 ~ 2304 x 1296 (+8 +8)
fmt = Y/CbCr 4:2:0 3231564e
fmt = Y/CrCb 4:2:0 (N-C) 31324d4e
fmt = Y/CbCr 4:2:0 (N-C) 32314d4e
XCORE:K:rk_aiq_uapi_sysctl_preInit_scene: main_scene: normal, sub_scene: day
IPCSERVER:K:cid[0] Process path:/tmp/UNIX.domain0, sockfd:29
XCORE:K:cid[0] rk_aiq_uapi_sysctl_init success. iq:/oem/usr/share/iqfiles/sc3336_CMK-OT2119-PC1_30IRC-F16.json
XCORE:K:cid[0] rk_aiq_uapi_sysctl_prepare success. mode:0
/dev/video11 does not support changing fps
RK_DMA_HEAP_ALLOC_BUFFER failed
dma_buf_alloc 6220800 failed
MessageParser process loop exit!
IPCSERVER:K:cid[0] Deinit success
XCORE:K:cid[0] rk_aiq_uapi_sysctl_deinit_locked success.
Code: Select all
[11678.171811] stream_cif_mipi_id0: open video, entity use_countt 2
[11678.171918] stream_cif_mipi_id1: open video, entity use_countt 1
[11678.177607] rkisp rkisp-vir0: first params buf queue
[11678.178488] cma: cma_alloc: rk-dma-heap-cma: alloc failed, req-size: 765 pages, ret: -12
[11678.178507] vb2_cma_sg_alloc_contiguous: cma_en:1 alloc pages fail
[11678.182423] stream_cif_mipi_id1: close video, entity use_count 0
[11678.182468] stream_cif_mipi_id0: close video, entity use_count 1
[11678.183064] stream_cif_mipi_id0: s_power 0, entity use_count 0
[11708.162895] stream_cif_mipi_id0: s_power 1, entity use_count 1
[11708.171802] stream_cif_mipi_id0: open video, entity use_countt 2
[11708.171909] stream_cif_mipi_id1: open video, entity use_countt 1
[11708.177917] rkisp rkisp-vir0: first params buf queue
[11708.178821] cma: cma_alloc: rk-dma-heap-cma: alloc failed, req-size: 765 pages, ret: -12
[11708.178840] vb2_cma_sg_alloc_contiguous: cma_en:1 alloc pages fail
[11708.184811] stream_cif_mipi_id1: close video, entity use_count 0
[11708.184856] stream_cif_mipi_id0: close video, entity use_count 1
[11708.185764] stream_cif_mipi_id0: s_power 0, entity use_count 0
[11711.056130] done=1 retry_required=0 sw_retry_required=0 acknowledged=1
[11738.162848] stream_cif_mipi_id0: s_power 1, entity use_count 1
[11738.175884] stream_cif_mipi_id0: open video, entity use_countt 2
[11738.181834] stream_cif_mipi_id1: open video, entity use_countt 1
[11738.188315] rkisp rkisp-vir0: first params buf queue
[11738.191568] cma: cma_alloc: rk-dma-heap-cma: alloc failed, req-size: 765 pages, ret: -12
[11738.191589] vb2_cma_sg_alloc_contiguous: cma_en:1 alloc pages fail
[11738.199858] stream_cif_mipi_id1: close video, entity use_count 0
[11738.199908] stream_cif_mipi_id0: close video, entity use_count 1
[11738.201599] stream_cif_mipi_id0: s_power 0, entity use_count 0
[11768.162904] stream_cif_mipi_id0: s_power 1, entity use_count 1
[11768.171843] stream_cif_mipi_id0: open video, entity use_countt 2
[11768.171953] stream_cif_mipi_id1: open video, entity use_countt 1
[11768.177453] rkisp rkisp-vir0: first params buf queue
[11768.178322] cma: cma_alloc: rk-dma-heap-cma: alloc failed, req-size: 765 pages, ret: -12
[11768.178342] vb2_cma_sg_alloc_contiguous: cma_en:1 alloc pages fail
[11768.182290] stream_cif_mipi_id1: close video, entity use_count 0
[11768.182341] stream_cif_mipi_id0: close video, entity use_count 1
[11768.182943] stream_cif_mipi_id0: s_power 0, entity use_count 0
[11798.162961] stream_cif_mipi_id0: s_power 1, entity use_count 1
[11798.174144] stream_cif_mipi_id0: open video, entity use_countt 2
[11798.174250] stream_cif_mipi_id1: open video, entity use_countt 1
[11798.181636] rkisp rkisp-vir0: first params buf queue
[11798.184005] cma: cma_alloc: rk-dma-heap-cma: alloc failed, req-size: 765 pages, ret: -12
[11798.184025] vb2_cma_sg_alloc_contiguous: cma_en:1 alloc pages fail
[11798.189193] stream_cif_mipi_id1: close video, entity use_count 0
[11798.189243] stream_cif_mipi_id0: close video, entity use_count 1
[11798.189838] stream_cif_mipi_id0: s_power 0, entity use_count 0
[12011.052515] done=1 retry_required=0 sw_retry_required=0 acknowledged=1
opencv-mobile使用的是https://github.com/LuckfoxTECH/luckfox_pico_rkmpi_example,kernel-5.10.160分支
测试代码(每30s调用一次):
Code: Select all
cv::VideoCapture cap;
cap.set(cv::CAP_PROP_FRAME_WIDTH, 1920);
cap.set(cv::CAP_PROP_FRAME_HEIGHT, 1080);
if (!cap.open(0)) {
LOG_ERROR("Failed to open camera");
cap.release();
return ProcessorStatus::kProcessorFailure;
}
const int w = cap.get(cv::CAP_PROP_FRAME_WIDTH);
const int h = cap.get(cv::CAP_PROP_FRAME_HEIGHT);
LOG_DEBUG("Camera frame size is {} x {}", w, h);
cv::Mat frame;
cap >> frame;
if (frame.empty()) {
LOG_ERROR("Failed to capture");
cap.release();
return ProcessorStatus::kProcessorFailure;
}
auto timeString = getCurrentTimeString();
MyFontFace fontFace;
cv::putText(frame, timeString,cv::Point(30, 60), cv::Scalar(127, 0, 127), fontFace, 20);
cv::putText(frame, "1",cv::Point(30, 1040), cv::Scalar(127, 0, 127), fontFace, 20);
cap.release();
if (!cv::imwrite("/userdata/capture/out.jpg", frame)) {
LOG_ERROR("Failed to save photo");
return ProcessorStatus::kProcessorFailure;
}