c++ - 如何将opencv mat灰度图像转换为pytorch张量?
问题描述
我想将 cv::Mat 类转换为 torch::Tensor 类并将它们放入 libtorch 的 CNN 模块中进行预测。我应该如何将 Mat 类转换为 Tensor 类?我的 CNN 模块是使用 mnist 训练集生成的 pt 文件。这个mnist训练集的训练图像是单通道灰度图像。如果我要测试,它应该加载一个灰度图,所以我想将单通道灰度图转换为张量。我使用的语言是c++。</p>
解决方案
谢谢您的帮助。最后,我找到了解决方案。之前,我对张量类了解不多。张量有四个元素,分别是图像的数量、高度、宽度和字节深度。
std::string p1 = "D:";
std::string p2;
std::cin >> p2;
std::string p3 = ".png";
std::string path = p1 + p2 + p3;
cv::Mat image = cv::imread(path,cv::IMREAD_GRAYSCALE);
torch::Tensor img_tensor = torch::from_blob(image.data, { 1, image.rows, image.cols, 1 }, torch::kByte);
img_tensor = img_tensor.permute({ 0, 3, 1, 2 });
img_tensor = img_tensor.toType(torch::kFloat);
img_tensor = img_tensor.div(255);
auto a = net->predict(img_tensor);
std::cout << a.argmax() << std::endl;
推荐阅读
- .htaccess - 如何使用 htaccess 动态重定向多个 URL?
- ssas - 永远运行的简单计算成员 - MDX
- mule - Dataweave 检查值是否包含在 YAML 列表中
- ios - “无法编译生成的注册商代码。” 将 Forms 和 Visual.Material 更新到 v4.2.0.848062 后
- mysql - MySQL将多个列的整数加在一起作为结果
- r - 如何使用存储在 R 中另一个数据框中的组列顺序排列数据框元素?
- html - React 将粘贴的 html 渲染为标签,而不是字符串
- c# - XUnit 部署目录
- python - 在特定单元格中将数据框添加到 Excel
- lando - 让 Lando Web 服务器在 localhost:8000 上侦听