关于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的格式,显示效果如下,可以观察到绿边已经被裁剪,原始图像也没有出现问题,裁剪是成功的:

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值