我尝试在使用 Python.NET 的 Python 应用程序中使用 .NET 程序集。 C# 代码捕获一个图像,我想与 python 一起使用。假设我有以下 C# 方法:
public static byte[] Return_Image_As_Byte_Array()
{
Image image = Image.FromFile("C:\path\to\an\image");
ImageConverter imageConverter = new ImageConverter();
byte[] ByteArray = (byte[])imageConverter.ConvertTo(image, typeof(byte[]));
return ByteArray;
}
当我在 python 中使用 Python.Net 时,我执行以下操作:
import clr
clr.AddReference('MyAssembly')
from MyAssembly import MyClass
print(MyClass.Return_Image_As_Byte())
这给了我输出:
<System.Byte[] at 0xb7ba20c080>
有没有办法将这个图像从 C# 转换为像 numpy 数组这样的原生 python 类型?
最佳答案
如果您正在寻找性能:
我发现 np.fromiter()
(numpy) 比上面@dlammy url 链接中提供的答案快 6 倍,作为对问题的回应。使用的函数是 asNumpyArray()
网址:https://github.com/pythonnet/pythonnet/issues/514
由于时间有这样的区别,我认为只有一次定时运行就足够了,而不是平均结果。
我的结果:np.fromiter()
: 67.914736sasNumpyArray()
: 334.5198s
解决方案在这里找到:https://stackoverflow.com/a/61077271/4084346
关于python - 在 Python .Net 中将 C# 字节数组转换为 numpy 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35768063/