关于RDK X3(旭日X3派)的VPS不能输出300x300照片的临时解决办法参考

本文介绍了如何在RDKX3平台上使用JupyterNotebook和Python进行图像处理,包括如何安装JupyterNotebook,以及如何通过VPS模块处理nv12格式的图像。文章详细描述了VPS的功能和在处理过程中遇到的问题,即图像尺寸不匹配,最后提供了解决方案——利用numpy裁剪多余像素。
摘要由CSDN通过智能技术生成

探索工具

使用 Jupyter Notebook逐句运行Python代码,并且可以通过matplotlib模块将nv12格式的图像直接在开发机的浏览器上显示。

**如何为RDK X3安装Jupyter Notebook:**https://developer.horizon.cc/forumDetail/188481611833243692

**如何使用matplotlib将nv12的图像显示出来:**https://developer.horizon.cc/forumDetail/188481611833243698

RDK X3的VPS

RDK X3有一个硬件上的视频处理模块VPS,使能指定camera通道的vps(video process)图像处理功能,可以对nv12格式的图像输入图像完成缩放、旋转、裁剪等功能,时间开销都是微秒级的。

具体请参考 RDK X3 用户手册

**Python接口:**https://developer.horizon.cc/documents_rdk/python_development/pydev_multimedia_api_x3/object_camera

**C/C++接口:**https://developer.horizon.cc/documents_rdk/clang_development/cdev_multimedia_api_x3/vio_api#sp_open_vps

VPS的问题

在使用VPS对一张1080p的图像进行缩小到300*300的操作为,应该输出135000大小的数组,但是输出了144000大小数据。因为300不是32的整数,所以向上取整到320,可以通过后期裁剪来去掉绿色区域。

首先通过Camera获取一张1080p的图像,分辨率为1920 x 1080,格式为nv12,将这张图片转化为BGR8的格式,显示效果如下:

在这里插入图片描述

# 声明一个VPS的对象
vps = srcampy.Camera()
ret = vps.open_vps(2, 1, 1920, 1080, 300, 300)
# mipi_data是1920*1080的nv12图片
mipi_img = np.frombuffer(mipi_data, dtype=np.uint8)
print(mipi_img.shape)  # 输出(3110400,),其中3110400 = 1920*1080*1.5

# 将1080p的图像送入VPS
ret = vps.set_img(mipi_data)
print(ret)  # 输出为0, 表示操作成功

# 从VPS取照片,应该得到300*300的图片,但是得到的是300*320的图片
vps_data = vps.get_img(2, 300, 300)
nv12 = np.frombuffer(vps_data, dtype=np.uint8)
print(nv12.shape)  # 输出(144000,),其中144000 = 320*300*1.5

将这张图片转化为BGR8的格式,显示效果如下:

在这里插入图片描述

暂时的解决方法

暂时的解决方法是利用numpy的接口对获得的nv12图像进行裁剪,将 300 x 320 的nv12图像裁剪为300 x 300 的nv12图像,大约有 2.4ms 的时间开销。

### 对象 nv12 是从VPS获得的数据流,表达为numpy数组的格式 
### 对象 new_nv12 是裁剪后的nv12图像,表达为numpy数组的格式 

# 对Y分量进行裁剪
y_channel = nv12[:300*320].reshape(300,320)[:,:-20]
# 对UV分量进行裁剪
uv_channel =nv12[300*320:].reshape(150,320)[:,:-20]
# 合并
new_nv12 = np.concatenate((y_channel.ravel(), uv_channel.ravel()))

print(new_nv12.shape)  # 输出(135000,),其中135000 = 300*300*1.5

这里将这张图片转化为BGR8的格式,显示效果如下,可以观察到绿边已经被裁剪,原始图像也没有出现问题,裁剪是成功的:

在这里插入图片描述

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
旭日X3 TogetherROS是一种基于旭日X3开发板的环境搭建方案。它提供了一系列的资源和工具,帮助用户进行开发和研究。通过使用TogetherROS,用户可以利用旭日X3的算力和智慧视觉功能,开发出各种有趣的应用,比如拳皇健身游戏。\[1\] 如果你对旭日X3的环境搭建和使用感兴趣,可以参考以下资源: - 地平线机器人平台用户手册,提供了详细的使用指南和API文档。\[2\] - 古月居旭日X3定制课程,提供了针对旭日X3的深入学习和实践教程。\[2\] - 旭日X3ROS2 Foxy配置记录,记录了在ROS2 Foxy环境下配置旭日X3的步骤和注意事项。\[2\] - 如何退出Vim编辑器,这是一个关于Vim编辑器的教程,可能对你在配置旭日X3时遇到的问题有所帮助。\[2\] 如果你想开始使用旭日X3,可以按照以下步骤进行: 1. 从地平线开发者社区的资源中心下载旭日X3系统镜像(system_sdcard.img文件)。\[3\] 2. 下载并安装SD卡烧录工具,比如balenaEtcher。\[3\] 3. 使用烧录工具将系统镜像烧录到SD卡上。 4. 将烧录好的SD卡插入旭日X3开发板,并启动开发板。 通过以上步骤,你就可以开始使用旭日X3进行开发和研究了。希望这些信息对你有帮助! #### 引用[.reference_title] - *1* *3* [旭日X3,从零到TogetherRos的快速体验](https://blog.csdn.net/m0_70368559/article/details/126694454)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [002_旭日X3初探:TogetherROS安装](https://blog.csdn.net/weixin_43826092/article/details/125580993)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值