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



我正在使用Emgu CV库来显示图像,并在C#项目中对它们进行一些数学运算。我正在尝试从文件系统中读取图片,如果我将图片的深度设置为 8 位,则可以毫无问题地工作。一旦我想保存更大的图像,Visual Studio 就会在实例化新图像的位置崩溃(请参阅代码)。崩溃意味着UI冻结,并在Windows 10信息中心弹出一条消息,指出Visual Studio正在等待内部进程。

我试图将图片的深度设置为 32 位(int)和 16 位(短)。这些类型显示所描述的问题。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 一样存储,因为我文件系统上的图像具有正确的 bitdetph。

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

尝试:

var image1 = new Image<Bgra, byte>( imagePath );

最新更新