【问题标题】:Cannot convert type to 'System.Drawing.Image' an explicit conversion exists无法将类型转换为“System.Drawing.Image”存在显式转换
【发布时间】:2019-05-11 23:36:51
【问题描述】:

对此的新手,我将 Spinnaker SDK 示例用于 FLIR (PointGrey) 相机。我正在尝试转换 'convertedImage' 以在 Windows 窗体中的 PictureBox 中使用并收到错误“无法将类型隐式转换为 'System.Drawing.Image'。存在显式转换(您是否缺少演员表?)”。你能告诉我我需要做什么吗?谢谢!

尝试了所有方法,包括基本的显式转换。

//Part of Spinnaker SDK example:    
using (IManagedImage convertedImage = 
rawImage.Convert(PixelFormatEnums.Mono8))
{
    String filename = "TriggerQS-CSharp-";
    if (deviceSerialNumber != "")
    {
        filename = filename + deviceSerialNumber + "-";
    }
    Image testImage = convertedImage; 
}

【问题讨论】:

  • 这可能意味着Image testImage = (Image)convertedImage;。请注意 testImageusing 块中声明。
  • 我认为这越来越近了。现在我得到:无法将“SpinnakerNET.ManagedImage”类型的对象转换为“System.Drawing.Image”类型。会记住 using 块。

标签: c# windows forms image spinnaker-cam


【解决方案1】:

我遇到了同样的问题。 Spinnaker 类型IManagedImage 有一个名为ManagedData 的属性,它是一个包含图像所有字节的一维向量。如果您有如下示例中的颜色,则它们是交错的。

//cv.ManagedData is a one D array of all pixels in all colors

        int nx = 2592;
        int ny = 1944; //7776/3 = 2592  stride, i.e. rgb are interleaved
        byte[,,] data = new byte[ny, nx, 3];

        for (int j = 0; j < ny; j++)
        {
            for (int i = 0; i < nx; i++)
            {
                for (int k = 0; k < 3; k++)
                {
                    data[j,i, k] = cv.ManagedData[j * 3 * nx + 3 * i + k];
                }

            }
        }

        //emgu cv accepts the [,,] byte array
        Image<Bgr, Byte> im0 = new Image<Bgr, Byte>(data); 

【讨论】:

    猜你喜欢
    • 2012-05-09
    • 1970-01-01
    • 1970-01-01
    • 2019-05-15
    • 2020-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多