HarmonyOS ImageReceiver获取图像通过NativeWindow渲染显示的旋转角度问题

通过ImageReceiver获取到相机的YUV数据,由NV21转为I420格式,通过NativeWindow渲染,后置相机的旋转角度为90度,但是需要将NativeWindow的角度设为270度才能显示正常;同理前置相机的旋转角度为270度,需要将NativeWindow的角度设为90度才能显示正常

以下为NativeWindow属性设置代码:

code = SET_FORMAT;
int32_t format = NATIVEBUFFER_PIXEL_FMT_YCBCR_420_P;
ret = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, code, format);
OH_LOG_Print(LOG_APP, LOG_INFO, LOG_DOMAIN, "mytest", "set window format=%{public}d", ret);

code = SET_TRANSFORM;
int32_t transform = NATIVEBUFFER_ROTATE_NONE;
ret = OH_NativeWindow_NativeWindowHandleOpt(nativeWindow, code, transform);
OH_LOG_Print(LOG_APP, LOG_INFO, LOG_DOMAIN, "mytest", "SET_TRANSFORM=%{public}d", ret);
HarmonyOS
7天前
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
fox280

要通过ImageReceiver获取图像并通过NativeWindow渲染显示的旋转角度,可以按照以下步骤进行:

1.获取ImageReceiver对象:通过ImageReceiverNative获取ImageReceiver对象。

2.获取ImageSourceInfo对象:使用OH_ImageSource_Info_Create函数创建一个ImageSourceInfo指针。

3.获取旋转角度:使用OH_ImageSourceInfo_GetRotate函数获取ImageSourceInfo对象中的旋转角度信息。

4.设置旋转角度:如果需要设置旋转角度,可以使用OH_ImageSourceInfo_SetRotate函数。

5.渲染图像:使用NativeWindow将图像渲染显示,并应用之前获取的旋转角度。具体的步骤如下:- 调用OH_ImageReceiverNative_GetCapacity获取ImageReceiver的容量。- 调用OH_ImageSourceInfo_GetRotate获取旋转角度。- 如果需要设置旋转角度,可以调用OH_ImageSourceInfo_SetRotate。- 使用OH_ImageSourceInfo_Release释放ImageSourceInfo指针。- 使用OH_DecodingOptions_Create创建DecodingOptions对象。- 使用OH_DecodingOptions_GetRotate获取旋转角度。- 如果需要设置旋转角度,可以调用OH_DecodingOptions_SetRotate。- 使用OH_PixelmapNative_ReadPixels读取图像像素数据。- 使用OH_PixelmapNative_Scale根据输入的宽高对图片进行缩放。- 使用OH_PixelmapNative_Rotate根据输入的角度对图片进行旋转。- 使用OH_PixelmapNative_WritePixels将处理后的图像像素数据写回PixelMap。- 使用OH_PixelmapNative_Release释放PixelmapNative指针。

通过以上步骤,可以实现通过ImageReceiver获取图像并通过NativeWindow渲染显示的旋转角度。

当前规格,预览流旋转角度固定值 90 度,

目前双路预览流角度固定前置摄像头得到的YUV数据顺时针旋转了90度,后置摄像头得到的YUV数据顺时针旋转了270度。

可以通过YUV数据进行旋转操作,对于前置摄像头的数据还需进行镜像翻转操作

NativeWindow设置的旋转角度是逆时针

分享
微博
QQ
微信
回复
7天前
相关问题
HarmonyOS 图片旋转角度问题
64浏览 • 1回复 待解决
Canvas 中 fillText 如何旋转角度
576浏览 • 1回复 待解决
HarmonyOS 如何获取图片角度
121浏览 • 1回复 待解决
HarmonyOS 旋转设备获取设备方向问题
82浏览 • 1回复 待解决
HarmonyOS 手势响应不同角度问题
304浏览 • 1回复 待解决
imageReceiver拿到数据帧长度
1913浏览 • 1回复 待解决
HarmonyOS 旋转屏幕后显示不正常
119浏览 • 1回复 待解决
如何获取前置摄像头预览图像
2504浏览 • 1回复 待解决