软件定义摄像机APP开发
您在体验过程中有任何疑问,都可以在此留言反馈>> 
点击此链接进入华为云学院,点击“报名学习”即可免费参加软件定义摄像机APP开发培训。
1. 介绍
什么是软件定义摄像机
华为软件定义摄像机(Software-Defined Camera,简称SDC)采用智能算法与硬件底座分离的设计理念。开放的软件架构能够实现算法APP按需部署在SDC上,汇聚生态伙伴优秀算法,实现普惠AI;开放的硬件架构,可以接入各类感知终端,为客户持续创造社会价值与商业价值。
案例目标
-
掌握软件定义摄像机服务化接口调用方式。
-
熟悉demo中模型加载、推理及后处理的流程。
-
掌握SDC APP编译方法。
环境准备
体验所需的demo文件和环境如下,已经为您做好准备:
您可以访问开发者社区论坛机器视觉Codelabs活动主题帖获得相关支持,在活动期间完成体验任务,还可参加畅玩换好礼等活动。更多信息请访问Codelabs活动主题帖链接:https://bbs.huaweicloud.com/forum/thread-44701-1-1.html
2. APP名称定义
在main.c文件中APP_NAME定义了SDC APP的名称,在APP文件打包时,后缀为spec的配置文件中name字段的值需要与APP_NAME定义的一致,此处我们将APP名称定义为“cow_sheep_dog_horse”。

3. SDC服务化接口调用
在主函数main.c中,通过SDC_ServiceCreate函数创建文件句柄来打开对应的SDC服务,后续可直接通过文件句柄调用对应服务。在SDC_GetHardWareId函数中调用SDC服务化接口获取SDC的ID信息。

SDC_ServiceCreate函数中,打开文件句柄操作示例如下:
![]()
从utils.iaas.sdc服务化接口获取当前摄像机的硬件ID为例,介绍APP和服务化接口的交互方式的示例如下:
-
消息头填充时,head.url = SDC_URL_ HARDWARE _ID指定获取当前摄像机的硬件ID;head.method = SDC_METHOD_GET指定方法。
-
通过write(fd_utils,&head,sizeof(head))函数向utils.iaas.sdc服务化接口发送一条获取硬件ID的消息,获取硬件ID。在write函数参数中,fd_utils为APP打开utils.iaas.sdc服务化接口的句柄,&head为消息的首地址,sizeof(head)为消息的长度。
-
APP通过read函数读回utils.iaas.sdc服务化接口返回的响应。硬件ID的内容,会读回到消息体pstHardWareParas->id指向的内存空间。

4. AI模型加载
在主函数main.c中指定AI模型加载路径,例如,AI模型名称为cow_sheep_dog_horse.wk,则修改为“./lib/cow_sheep_dog_horse.wk”。

5. 模型参数初始化
打开sdc_os_api.c文件,找到SAMPLE_SVP_NNIE_Yolov3_SoftwareInit函数中红色框所示的内容,修改分类数,与新模型分类数保持一致,例如,动物识别demo的分类数为4。
![]()
打开inc\sample_comm_svp.h文件,对后处理函数中的宏定义SAMPLE_SVP_NNIE_YOLOV3_EACH_BBOX_INFER_RESULT_NUM做修改,保证输出向量维度与网络一致。根据新的模型分类数,将原宏定义值修改为:(分类数+4+1),修改内容请参考如下示例代码。例如,动物识别demo中该宏定义值修改为9。
![]()
![]()
6. 后处理
在main.c的SDC_YuvDataProc函数中按照新模型对应分类的名称,修改输出的事件内容。例如在动物识别demo中,修改case语句为对应的分类名称和分类数。
![]()
7. 编译
进入代码工程路径,执行make命令完成代码编译。下图示例中,编译成功后的二进制文件名为animal。
![]()
编译后的二进制文件请点击此处下载。
9. 恭喜你
祝贺您,您完成了华为软件定义摄像机APP中AI模型调用和摄像机硬件ID获取的开发,接下来,您可以通过Codelabs活动之“6步助力软件定义摄像机算法便捷上线”访问**HoloSens一站式开发平台,**并进行摄像机算法的打包、调测和发布,将开发的算法上线到华为智能视频算法商城HoloSens Store。
10. 参与互动赢好礼
在活动期间完成体验任务,还可参加畅玩换好礼等活动。
![闯关有礼]()
软件定义摄像机APP开发
您在体验过程中有任何疑问,都可以在此留言反馈>>
点击此链接进入华为云学院,点击“报名学习”即可免费参加软件定义摄像机APP开发培训。
1. 介绍
什么是软件定义摄像机
华为软件定义摄像机(Software-Defined Camera,简称SDC)采用智能算法与硬件底座分离的设计理念。开放的软件架构能够实现算法APP按需部署在SDC上,汇聚生态伙伴优秀算法,实现普惠AI;开放的硬件架构,可以接入各类感知终端,为客户持续创造社会价值与商业价值。
案例目标
掌握软件定义摄像机服务化接口调用方式。
熟悉demo中模型加载、推理及后处理的流程。
掌握SDC APP编译方法。
环境准备
体验所需的demo文件和环境如下,已经为您做好准备:
demo工程代码。
海思“aarch64-himix100-linux-gcc”编译器和编译环境。
您可以访问开发者社区论坛机器视觉Codelabs活动主题帖获得相关支持,在活动期间完成体验任务,还可参加畅玩换好礼等活动。更多信息请访问Codelabs活动主题帖链接:https://bbs.huaweicloud.com/forum/thread-44701-1-1.html
2. APP名称定义
在main.c文件中APP_NAME定义了SDC APP的名称,在APP文件打包时,后缀为spec的配置文件中name字段的值需要与APP_NAME定义的一致,此处我们将APP名称定义为“cow_sheep_dog_horse”。
3. SDC服务化接口调用
在主函数main.c中,通过SDC_ServiceCreate函数创建文件句柄来打开对应的SDC服务,后续可直接通过文件句柄调用对应服务。在SDC_GetHardWareId函数中调用SDC服务化接口获取SDC的ID信息。
SDC_ServiceCreate函数中,打开文件句柄操作示例如下:
从utils.iaas.sdc服务化接口获取当前摄像机的硬件ID为例,介绍APP和服务化接口的交互方式的示例如下:
消息头填充时,head.url = SDC_URL_ HARDWARE _ID指定获取当前摄像机的硬件ID;head.method = SDC_METHOD_GET指定方法。
通过write(fd_utils,&head,sizeof(head))函数向utils.iaas.sdc服务化接口发送一条获取硬件ID的消息,获取硬件ID。在write函数参数中,fd_utils为APP打开utils.iaas.sdc服务化接口的句柄,&head为消息的首地址,sizeof(head)为消息的长度。
APP通过read函数读回utils.iaas.sdc服务化接口返回的响应。硬件ID的内容,会读回到消息体pstHardWareParas->id指向的内存空间。
4. AI模型加载
在主函数main.c中指定AI模型加载路径,例如,AI模型名称为cow_sheep_dog_horse.wk,则修改为“./lib/cow_sheep_dog_horse.wk”。
5. 模型参数初始化
打开sdc_os_api.c文件,找到SAMPLE_SVP_NNIE_Yolov3_SoftwareInit函数中红色框所示的内容,修改分类数,与新模型分类数保持一致,例如,动物识别demo的分类数为4。
打开inc\sample_comm_svp.h文件,对后处理函数中的宏定义SAMPLE_SVP_NNIE_YOLOV3_EACH_BBOX_INFER_RESULT_NUM做修改,保证输出向量维度与网络一致。根据新的模型分类数,将原宏定义值修改为:(分类数+4+1),修改内容请参考如下示例代码。例如,动物识别demo中该宏定义值修改为9。
6. 后处理
在main.c的SDC_YuvDataProc函数中按照新模型对应分类的名称,修改输出的事件内容。例如在动物识别demo中,修改case语句为对应的分类名称和分类数。
7. 编译
进入代码工程路径,执行make命令完成代码编译。下图示例中,编译成功后的二进制文件名为animal。
编译后的二进制文件请点击此处下载。
8. 调测
利用HoloSens一站式开发平台,将编译后的二进制文件与模型转换生成的wk文件打包成RPM文件,之后将RPM文件加载到SDC进行线上调测。更多信息请查看Codelabs活动之“6步助力软件定义摄像机算法便捷上线”。也可以访问开发者社区论坛机器视觉Codelabs活动主题帖获得相关支持,链接:https://bbs.huaweicloud.com/forum/thread-44701-1-1.html
9. 恭喜你
祝贺您,您完成了华为软件定义摄像机APP中AI模型调用和摄像机硬件ID获取的开发,接下来,您可以通过Codelabs活动之“6步助力软件定义摄像机算法便捷上线”访问**HoloSens一站式开发平台,**并进行摄像机算法的打包、调测和发布,将开发的算法上线到华为智能视频算法商城HoloSens Store。
10. 参与互动赢好礼
在活动期间完成体验任务,还可参加畅玩换好礼等活动。