您好!!
我们使用的系统包括 TDA4VM、8.1SDK、96722、4*96717、 multi_cam 应用程序。
删除4个摄像头中的一个后、图形无法运行。
需要你的帮助,谢谢。
This thread has been locked.
If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.
在8.1 SDK 中、当 capture_format 是 raw 时、我们仅通过 TIvxCreateRawImage 和 TIvxMapRawImagePatch 将黑色帧发送到死区传感器。 现在、我们需要处理捕获中的 YUV 图像。 我们应该怎么做? 是否有一些 samilar 函数,关于 YUV422图像,与 TIvxCreateRawImage 和 TIvxMapRawImagePatch ?
感谢您的建议。
我想了想。
下面是一个补丁、以防任何人需要:
diff --git a/modules/include/app_capture_module.h b/modules/include/app_capture_module.h
Index ffb316aa.c0da514d 100644.
---- a/modules/include/app_capture_module.h
++ b/modules/include/app_capture_module.h
@@-129,6+129,8 @@ typedef 结构{
/*! 摄像机断开连接时使用的原始图像*/
TIVX_RAW_IMAGE ERROR_FRAME_RAW_IMAGE;
+ vx_image error_FRAME_image;
+
/*! 启用检测摄像头断开连接的标志*/
vx_uint8 enable_error_detection;
diff --git a/modules/src/app_capture_module.c b/modules/src/app_capture_module.c
Index 34a08c7e..cd2ec6c2 100755
-- a/modules/src/app_capture_module.c
++ b/modules/src/app_capture_module.c
@@-231,10 +231,10 @@静态 vx_STATUS CREATE_ERROR_DETECTION_FRAME (vx_context、CaptureObj *ca.
/*错误检测当前仅对原始输入启用*/
/*如果处于测试模式,发送测试帧*/
- if (0!= captrutureObj->capture_format)
-{
- CaptureObj->enable_error_detection = 0;
-}
+// if (0!= CaptureObj->capture_format)
+//{
+// CaptureObj->enable_error_detection = 0;
+//}
if (CaptureObj->test_mode)
{
@@-286、29 + 286、62 @@静态 vx_status create_error_detection_FRAME (vx_context、CaptureObj *ca.
vx_imagepatch_addressing_t image_addr;
void * data_ptr;
+ VX_UINT32宽度;
+ VX_UINT32高度;
+ vx_df_image 格式;
+
rect.start_x = 0;
rect.start_y = 0;
rect.end_x = sensorParams->sensorInfo.RAW_params.width;
rect.end_y = sensorParams->sensorInfo.RAW_PARAMS.height;
+
+ if (0 == CaptureObj->capture_format)
+{
+ captureObj->error_FRAW_IMAGE = TIVxCreateRawImage (上下文、&(sensorParams->sensorInfo.RAW_PARAMS));
- captureObj->error_FRAW_IMAGE = TIVxCreateRawImage (上下文、&(sensorParams->sensorInfo.RAW_PARAMS));
-
- status = vxGetStatus (( vx_reference) captureObj->error_FRAW_image );
+ status = vxGetStatus ((vx_reference) captureObj->error_FRAW_IMAGE);
- if (状态== vx_Success)
-{
- vxSetReferenceName ((VX_reference) captrutureObj->error_FRAW_image、"capture_node_error_FRAW_IMAGE");
+ if (status == vx_Success)
+{
+ vxSetReferenceName ((Vx_reference) captrutureObj->error_FRAW_image、"capture_node_error_FRAW_IMAGE");
- status = tvxMapRawImagePatch ((tvx_raw_image) captureObj->error_FRAME_RAW_image、&rect、0、&map_id、ℑ_addr、 &DATA_PTR、VX_READ_ONLY、VX_MEMORY_TYPE_HOST、TIVX_RAW_IMAGE_ALLOC_BUFFER);
+ status = tvxMapRawImagePatch ((tvx_raw_image) captureObj->error_FRAME_RAW_IMAGE、&rect、0、&map_id、ℑ_addr、 &DATA_PTR、VX_READ_ONLY、VX_MEMORY_TYPE_HOST、TIVX_RAW_IMAGE_ALLOC_BUFFER);
-如果((VX_STATUS)VX_SUCCESS == STATUS)
+ if ((VX_STATUS) VX_SUCCESS == STATUS)
+{
+ memset (data_ptr、0x00、image_addr.strip_y*(sensorParams->sensorInfo.raw_params.height+sensorParams->sensorInfo.raw_params.meta_height_afte)
(r));
+}
+}
+其他
{
- memset (data_ptr、0x00、image_addr.strip_y*(sensorParams->sensorInfo.raw_params.height+sensorParams->sensorInfo.raw_params.meta_height_after);
+ printf ("[ capture_module]无法计算错误帧原始图像!\n");
}
}
方案
{
- printf("[capture_module]无法计算错误帧原始图像!\n");
+ width = sensorParams->sensorInfo.RAW_params.width;
+ height = sensorParams->sensorInfo.raw_params.height;
+ format = sensorParams->sensorInfo.raw_params.format->pixel_container;
+ captrureObj->error_FRAME_image = vxCreateImage (上下文、宽度、高度、格式);
+
+ status = vxGetStatus ((vx_reference) captureObj->error_FRAME_image);
+
+ if (status == vx_Success){
+ status = vxMapImagePatch ((vx_image) captureObj->error_FRAME_image、&rect、0、&map_id、ℑ_addr、 &DATA_PTR、VX_READ_ONLY、VX_MEMORY_TYPE_HOST、VX_NOGAP_X);
+
+ if (status == vx_Success)
+{
+ memset (data_ptr、0、image_addr.STRIDE_y *
+(sensorParams->sensorInfo.raw_params.height
++ sensorParams->sensorInfo.raw_params.meta_height_before
++ sensorParams->sensorInfo.raw_params.meta_height_after );
+}
+}
+其他
+{
+ printf ("[capture_module]无法计算错误帧 YUV 图像!\n");
+}
+
}
}
方案
@@-643,7 +676,18 @@ vx_status app_send_error_FRAME (CaptureObj * captrureObj)
{
Vx_STATUS = Vx_SUCCESS;
- status = TIvxCaptureRegisterErrorFrame (captureObj->node,(VX_reference) CaptureObj->error_FRAW_IMAGE);
+ vx_reference error_FRAME_image;
+// status = TIvxCaptureRegisterErrorFrame (CaptureObj->node、(vx_reference) CaptureObj->error_FRAW_IMAGE);
+
+ if (CaptureObj->capture_format == 0)
+{
+ ERROR_FRAME_IMAGE =(VX_reference) CaptureObj->ERROR_FRAME_RAW_IMAGE ;
+}
+其他
+{
+ ERROR_FRAME_IMAGE =(VX_reference) CaptureObj->ERROR_FRAME_IMAGE ;
+}
+ status = TIvxCaptureRegisterErrorFrame (CaptureObj->node、error_FRAME_image);
返回状态;
}
(结尾口播)