【发布时间】:2020-04-22 08:23:38
【问题描述】:
我目前正在尝试使用Boost::GIL(具有挑战性)进行一些 TensorFlow 推理(C 后端)。我需要一些想法,我已经能够加载我的 png 图像 (rgb8_image_t)
并转换为rgb32_f_image_t。
我还需要 3 次思考,数据的原始指针、分配的内存和维度。
-
不幸的是,对于分配的内存,函数
total_allocated_size_in_bytes()是私有的,所以我这样做了:boost::gil::view(dest).size() * boost::gil::view(dest).num_channels() * sizeof(value_type);
如果我没有任何额外的对齐故事填充,这是有效的。但它是否存在任何不错的选择?
对于维度,我应该匹配
numpy(来自 PILLOW),我希望两个库都使用相同的内存布局模式。据我了解,默认情况下,数据是交错连续的,所以应该是好的。最后一个原始指针
_memory,它是Image类的私有数据成员,没有专用函数。boost::gil::view(dest).row_begin(0)在第一个像素上返回一个迭代器,但我不确定如何获取数据_memory的指针。有什么建议吗?
非常感谢,
++t
ps:TensorFlow 提出了一个 C++ 后端,但是它不是从任何包管理器安装的,并且操作 Bazel 超出了我的能力。
【问题讨论】:
-
您考虑对齐是对的,代码库中有一些关于对齐的 cmets 提醒您,您需要确保不要使用破坏内存布局的标志进行编译:@987654321 @