opencv中的图片是cv::Mat类型的,HarmonyOS 相机拍摄得到的图像帧能否转换为cv::Mat类型?
通过HarmonyOS 系统相机API采集到的是ArrayBuffer类型的图片数据流,现在使用opencv库,需要转为是cv::Mat类型的图片,请问该如何转换,目前是在Napi中方法需要用到cv::Mat类型的参数。
HarmonyOS
赞
收藏 0
回答 1
待解决
相关问题
HarmonyOS NDK 中的 opencv cv::mat 格式数据如何转?
176浏览 • 0回复 待解决
OH_ImageNative转为cv::Mat
437浏览 • 1回复 待解决
HarmonyOS OH_ImageNative *image转为cv ::mat
128浏览 • 1回复 待解决
如何将C++侧传入的PixelMap转换成cv::mat格式
1689浏览 • 1回复 待解决
HarmonyOS如何将三方相机数据流中数据转化成cv::Mat
668浏览 • 1回复 待解决
如何将datashare类型的数据转换为internal类型的数据?
2415浏览 • 0回复 待解决
HarmonyOS ArkTS中object类型如何转换为具体要使用的类型
274浏览 • 1回复 待解决
HarmonyOS 通过router传递的参数,无法转换为原有类型并且调用类型中的方法
189浏览 • 1回复 待解决
HarmonyOS Length类型的尺寸如何转换为数值进行计算?
132浏览 • 1回复 待解决
HarmonyOS 存在应用沙箱目录内的图片文件如何转换为PixelMap以及ArrayBuffer类型的数据
130浏览 • 1回复 待解决
HarmonyOS如何将视频流的一帧数据转换为图片
723浏览 • 1回复 待解决
如何将Resource资源类型,转换为文件所在的路径string
2854浏览 • 0回复 待解决
HarmonyOS getParamByName结果的类型转换
215浏览 • 1回复 待解决
HarmonyOS Resource类型图片如何转换为ImageBitmap?(目前需要把图片放在ets目录下)
787浏览 • 1回复 待解决
HarmonyOS textRecognition接口图像信息转换为字符信息
367浏览 • 1回复 待解决
HarmonyOS 如何将Resource资源类型,转换为文件所在的路径string?
739浏览 • 1回复 待解决
HarmonyOS使用as关键字转换为指定类型,结果为undefined
659浏览 • 1回复 待解决
HarmonyOS 是否有接口可以实现类似cv2工具库功能(高斯模糊、边缘检测、图像膨胀等)
155浏览 • 1回复 待解决
如何调用系统相机拍照,并获取到拍摄的图片
2132浏览 • 1回复 待解决
在建立好TCPSocket之后,如何将复合类型结构转换为ArrayBuffer?
905浏览 • 1回复 待解决
HarmonyOS 拍照完成后,得到的uri地址如何转换为base64格式?
168浏览 • 1回复 待解决
HarmonyOS Long类型和number的相互转换
264浏览 • 1回复 待解决
#鸿蒙通关秘籍#如何在HarmonyOS应用中将图像转换为灰度图?
289浏览 • 1回复 待解决
HarmonyOS ArkTS类型转换问题
1092浏览 • 1回复 待解决
情景描述为图片缓冲流arrayBuffer传入Native,然后将arrayBuffer转换成需要cvMat格式。
ArrayBuffer是二进制数组,是对固定长度的连续内存空间的引用,在将ArrayBuffer转换成OpenCV的Mat对象时,可以将ArrayBuffer作为作为内存数据传给OpenCV,如构造函数Mat::Mat(Size size, int type, void* data, size_t step=AUTO_STEP)中,可以将ArrayBuffer作为data使用
在HarmonyOS 开发中,针对图库支持硬解码的操作, 需要指定图像的内存空间大小,原本OH_AccessPixels(env, args[0], &imagePixels)获取到图片的内存地址并锁定该内存,但是实际图像的大小需要lineStride对齐,所以需要补充这部分信息,跟上层对齐,可以用OH_GetImageInfo获取到imageInfo,其中包含width,height,rowSize等信息:
其中rowSize被定义为lineStride,就是我们需要的信息,具体到业务代码,我们在使用OH_AccessPixels获取到图像对象内存地址后,转为opencv::Mat进行数组运算,由于图库硬解码限制line_stride必须为256的倍数,如果图像的宽*4不是256的整数倍数就会出现上述读取错误的问题,
需要补充lineStride,从而避免mat数据用到auto_stride补齐
提供pixemap的获取内存地址的接口,不负责维护构造其他数据结构.对应的参考资料:
napi接受及转换,可以参考NDK开发部分
https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/napi-data-types-interfaces-V5
arraybuffer、object类型的接收和返回,参考demo:
arraybuffer:
JS和C++相互调用ArrayBuffer
具体实现如下
Native侧接受传入的 ArkTS Array:
TS侧 接收 Native侧返回的Array
object:TS 获取 Native 层回调的Object 值
具体实现如下:
ArkTS 侧调用如下