创建深度超过8位的图像会使Visual Studio崩溃

时间:2019-01-07 08:06:16

标签: c# opencv emgucv

我正在使用Emgu CV库显示图像并在C#项目中对其进行一些数学运算。 我正在尝试从文件系统中读取图片,如果我将图片的深度设置为8位,则不会出现问题。 我想保存一个更大的图像时,Visual Studio在实例化新图像的位置崩溃(请参见代码)。崩溃意味着UI冻结,并且在Windows 10信息中心弹出一条消息,表明Visual Studio正在等待内部流程。

我试图将图片的深度设置为32位(int)和16位(short)。这些类型显示了所描述的问题。 8位(字节)不显示任何问题。我正在使用的图像的尺寸为69x44像素,位深度为32位(这是资源管理器向我显示的内容)。

private static readonly string imagePath = "C:/xxx/xxx/image.png";

var image1 = new Image<Gray, byte>( imagePath ); //works fine
var image2 = new Image<Gray, short>( imagePath ); //crashes visual studio
var image3 = new Image<Gray, int>( imagePath ); //crashes visual studio

我希望image2和image3与image1一样存储,因为我的文件系统上的图像具有适当的位。

1 个答案:

答案 0 :(得分:0)

也许您有32位的Bgra图片?这意味着每个像素有4个通道,每个通道使用8位。 Bgra代表蓝色,绿色,红色和Alpha。这对于png图像来说很典型,因为这种格式可以编码alpha通道。

尝试:

 <Entry x:Name="pEntry" ... />