这个问题是关于让.net中的所有内容都可以用于Tensorflow对象检测。因为我在.Net中,所以我对OpenCV调用使用包装EmguCV。至于Tensorflow,.Net中也有很多包装器。
我的问题是通用的,可能是特定于.Net的,但我不这么认为。从Emgu或OpenCV,我正在使用VideoCapture从视频源读取帧。每个帧都是一个Mat,也可以轻松将其转换为OpenCV图像。但是,Tensorflow对象检测需要某种图像阵列作为输入,怀疑它是NumPy阵列。
我发现了许多示例和示例代码,但其中大多数与在文件系统上具有jpeg之类的图像并将其读入有关。与OpenCV Mat或Image进行转换并没有多少关系到Tensorflow的输入数组。
特别是对于我使用的Tensorflow包装器,Tensorflow.Net,它实际上需要一个称为FeedItem的东西,如此处Tensorflow.Net所示,并且此示例再次读取图像文件。
我一直试图找出答案。我尝试采用Mat和Image Data属性,该属性是一个字节数组,并将其转换为NumPy数组,但不起作用。我有例外,说不支持有关锯齿状数组的内容。
那么,简单地讲,任何人都知道如何正确有效地将这些类型的图像数据转换为NumPy或我可以输入到Tensorflow输入中的内容?
谢谢!
答案 0 :(得分:0)
Jagged arrays-实际上是数组的数组,其中外部数组包含嵌套的数组,它们分配在内存中的其他位置。您需要做的是分配一个相同类型的平面连续数组,例如,
byte[] data = new byte[numberOfImages * width * height * 3];
,然后使用CopyTo从Data
属性复制字节。 (我对EmguCV不熟悉,可能会有更有效的方法来做到这一点。)
然后将data
转换为NumPy数组。