Ncnn: 怎么从ncnn::Mat转化为cv::Mat?

Created on 23 Aug 2018  ·  13Comments  ·  Source: Tencent/ncnn

我做的是OCR,用的是CTC损失,神经网络输出的结果还需要进一步处理,需要将输出的ncnn::Mat转化为cv::Mat,但是不知道该怎么办。

Most helpful comment

我使用的方法是:
cv::Mat cv_img = cv::Mat::zeros(rows,cols,opencv_typ);
ncnn_img.to_pixels(cv_img.data,ncnn::Mat::PIXEL_RGB);

All 13 comments

我使用的方法是:
cv::Mat cv_img = cv::Mat::zeros(rows,cols,opencv_typ);
ncnn_img.to_pixels(cv_img.data,ncnn::Mat::PIXEL_RGB);

@bigbao9494 你怎么这么优秀!!!

cv::Mat 怎么转 ncnn::Mat 呢 @bigbao9494 @nihui

@wangzl2011
cv::Mat bgr;
ncnn::Mat in = ncnn::Mat::from_pixels_resize(bgr.data, ncnn::Mat::PIXEL_BGR, bgr.cols, bgr.rows, 256, 256);

ncnn_img.to_pixels(cv_img.data,ncnn::Mat::PIXEL_RGB);使用这句出来的cv::Mat数据为空,ncnn_img本身的data有值,
image

@Tomhouxin 一样的

@nihui Opencv的Mat如果不是连续的地址,怎么转化为ncnn的Mat呢

@nihui Opencv的Mat如果不是连续的地址,怎么转化为ncnn的Mat呢

cv::Mat a;
a = a.clone();

有人遇到转完出来结果是空值的吗

有人遇到转完出来结果是空值的吗

请问转完结果为空的问题解决了吗?

参考文档 https://github.com/Tencent/ncnn/wiki/use-ncnn-with-opencv

转换的问题解决了,是由于ncnn::Mat被引用了一次之后,refcount变成了2,所以转出来的结果一直为空。重新定义一个ncnn::Mat,按照文档可成功转换。因此,我想问一下,怎样能让同一个ncnn::Mat多次引用呢?我用同一个ncnn::Mat经过mtcnn检测之后,再进行转换就变空了。

我使用的方法是:
cv::Mat cv_img = cv::Mat::zeros(rows,cols,opencv_typ);
ncnn_img.to_pixels(cv_img.data,ncnn::Mat::PIXEL_RGB);
opencv_typ 的头文件是哪个啊,报错: error: ‘opencv_typ’ was not declared in this scope

Was this page helpful?
0 / 5 - 0 ratings

Related issues

baiyecha picture baiyecha  ·  3Comments

varbegin picture varbegin  ·  3Comments

zsliaoming picture zsliaoming  ·  3Comments

mychina75 picture mychina75  ·  4Comments

Abel119 picture Abel119  ·  4Comments