Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

有关cv::Mat到ncnn::Mat类型变量的构造 #221

Closed
yunfan0621 opened this issue Dec 21, 2017 · 3 comments
Closed

有关cv::Mat到ncnn::Mat类型变量的构造 #221

yunfan0621 opened this issue Dec 21, 2017 · 3 comments

Comments

@yunfan0621
Copy link

首先感谢开源ncnn计算框架!:relaxed::relaxed:

最近在使用ncnn的时候遇到了一个问题:如何使用数据类型为CV_32FC3的OpenCV Mat类型的变量初始化ncnn::Mat?

由于我们使用的模型需要pixel-wise normalization,同时ncnn暂时还不支持mean blob形式的减均值操作,所以我用OpenCV对输入进行了归一化操作,类似img = (img - mean) / std。最终得到的data是一个h×w×3的cv::Mat,数据类型为CV_32FC3.请问如何构造相应的ncnn::Mat输入网络呢?

我现在尝试的方法是用ncnn::Mat in(height, width, 3, (float*)img.data);,但是运行结果不是很准确,想先确定一下这种数据构造方式是否正确(img,mean,std都没有错误)。请问有没有人遇到类似的问题?如果有的话请问是怎么解决的呢?请各位大神不吝赐教,谢谢!:pray::pray:

@nihui
Copy link
Member

nihui commented Dec 21, 2017

cv32fc3 的布局是 hwc
ncnn的Mat布局是 chw 需要调整排布

@yunfan0621
Copy link
Author

@nihui 谢谢,问题已经解决了

@Feezhen
Copy link

Feezhen commented Nov 22, 2020

@nihui 谢谢,问题已经解决了

想问一下是怎么解决的呢?我现在有个问题是,使用同一个模型在python(pytorch模型)和c++(ncnn模型)上做测试。输入是全1的2242243的图片。
结果发现,当c++的输入是uchar类型的cv::Mat的时候,c++和python的输出是一样的。
但是当c++的输入是float类型的cv::Mat的时候,c++和python的输出是不一样的。
不知道这个该怎么办呢?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants