using System;
|
using System.Collections.Generic;
|
using System.Linq;
|
using System.Runtime.InteropServices;
|
using System.Text;
|
using System.Threading.Tasks;
|
|
namespace LB_SmartVisionCameraSDK.PHM6000
|
{
|
/// <summary>
|
/// LBPointZ数据结构
|
/// </summary>
|
[StructLayout(LayoutKind.Sequential, Pack = 1)]
|
public struct LBPointZ
|
{
|
/// <summary>
|
/// Z坐标值
|
/// </summary>
|
public float z;
|
}
|
/// <summary>
|
/// LBPointXZ数据结构
|
/// </summary>
|
[StructLayout(LayoutKind.Sequential, Pack = 1)]
|
public struct LBPointXZ
|
{
|
/// <summary>
|
/// X坐标值
|
/// </summary>
|
public float x;
|
/// <summary>
|
/// Z坐标值
|
/// </summary>
|
public float z;
|
}
|
/// <summary>
|
/// LBPointXYZ数据结构
|
/// </summary>
|
[StructLayout(LayoutKind.Sequential, Pack = 1)]
|
public struct LBPointXYZ
|
{
|
/// <summary>
|
/// X坐标值
|
/// </summary>
|
public float x;
|
/// <summary>
|
/// Y坐标值
|
/// </summary>
|
public float y;
|
/// <summary>
|
/// Z坐标值
|
/// </summary>
|
public float z;
|
}
|
/// <summary>
|
/// LBPointXYZBGR数据结构
|
/// </summary>
|
[StructLayout(LayoutKind.Sequential, Pack = 1)]
|
public struct LBPointXYZBGR
|
{
|
/// <summary>
|
/// X坐标值
|
/// </summary>
|
public float x;
|
/// <summary>
|
/// Y坐标值
|
/// </summary>
|
public float y;
|
/// <summary>
|
/// Z坐标值
|
/// </summary>
|
public float z;
|
/// <summary>
|
/// 蓝色分量
|
/// </summary>
|
public byte b;
|
/// <summary>
|
/// 绿色分量
|
/// </summary>
|
public byte g;
|
/// <summary>
|
/// 红色分量
|
/// </summary>
|
public byte r;
|
}
|
/// <summary>
|
/// LBPointXYZBGRA数据结构
|
/// </summary>
|
[StructLayout(LayoutKind.Sequential, Pack = 1)]
|
public struct LBPointXYZBGRA
|
{
|
/// <summary>
|
/// X坐标值
|
/// </summary>
|
public float x;
|
/// <summary>
|
/// Y坐标值
|
/// </summary>
|
public float y;
|
/// <summary>
|
/// Z坐标值
|
/// </summary>
|
public float z;
|
/// <summary>
|
/// 蓝色分量
|
/// </summary>
|
public byte b;
|
/// <summary>
|
/// 绿色分量
|
/// </summary>
|
public byte g;
|
/// <summary>
|
/// 红色分量
|
/// </summary>
|
public byte r;
|
/// <summary>
|
/// 透明度
|
/// </summary>
|
public byte alpha;
|
}
|
/// <summary>
|
/// LBPointBGRA数据结构
|
/// </summary>
|
[StructLayout(LayoutKind.Sequential, Pack = 1)]
|
public struct LBPointBGRA
|
{
|
/// <summary>
|
/// 蓝色分量
|
/// </summary>
|
public byte b;
|
/// <summary>
|
/// 绿色分量
|
/// </summary>
|
public byte g;
|
/// <summary>
|
/// 红色分量
|
/// </summary>
|
public byte r;
|
/// <summary>
|
/// 透明度
|
/// </summary>
|
public byte alpha;
|
}
|
/// <summary>
|
/// LBPointZA数据结构
|
/// </summary>
|
[StructLayout(LayoutKind.Sequential, Pack = 1)]
|
public struct LBPointZA
|
{
|
/// <summary>
|
/// Z坐标值
|
/// </summary>
|
public float z;
|
/// <summary>
|
/// 保留1
|
/// </summary>
|
public byte reserve1;
|
/// <summary>
|
/// 保留2
|
/// </summary>
|
public byte reserve2;
|
/// <summary>
|
/// 保留3
|
/// </summary>
|
public byte reserve3;
|
/// <summary>
|
/// 透明度
|
/// </summary>
|
public byte alpha;
|
}
|
/// <summary>
|
/// BITMAPINFOHEADER数据结构
|
/// </summary>
|
[StructLayout(LayoutKind.Sequential)]
|
public struct BITMAPINFOHEADER
|
{
|
/// <summary>
|
/// 指定结构所需的字节数。 此值不包括颜色表的大小或颜色掩码的大小(如果它们追加到结构的末尾)。
|
/// </summary>
|
public uint biSize;
|
/// <summary>
|
/// 指定位图的宽度(以像素为单位)
|
/// </summary>
|
public int biWidth;
|
/// <summary>
|
/// 指定位图的高度(以像素为单位)。
|
/// </summary>
|
public int biHeight;
|
/// <summary>
|
/// 指定目标设备的平面数。 此值必须设置为 1。
|
/// </summary>
|
public ushort biPlanes;
|
/// <summary>
|
/// 指定每像素 (bpp) 位数。 对于未压缩格式,此值是每像素的平均位数。 对于压缩格式,此值是解码图像后未压缩图像的隐含位深度。
|
/// </summary>
|
public ushort biBitCount;
|
/// <summary>
|
/// 对于压缩视频和 YUV 格式,此成员是 FOURCC 代码,以小端顺序指定为 DWORD 。
|
/// </summary>
|
public uint biCompression;
|
/// <summary>
|
/// 指定图像的大小(以字节为单位)。 对于未压缩的 RGB 位图,可以将其设置为 0。
|
/// </summary>
|
public uint biSizeImage;
|
/// <summary>
|
/// 指定位图的目标设备的水平分辨率(以像素/米为单位)。
|
/// </summary>
|
public int biXPelsPerMeter;
|
/// <summary>
|
/// 指定位图的目标设备的垂直分辨率(以每米像素为单位)。
|
/// </summary>
|
public int biYPelsPerMeter;
|
/// <summary>
|
/// 指定位图实际使用的颜色表中的颜色索引数。
|
/// </summary>
|
public uint biClrUsed;
|
/// <summary>
|
/// 指定被认为对显示位图很重要的颜色索引数。
|
/// </summary>
|
public uint biClrImportant;
|
}
|
/// <summary>
|
/// RGBQUAD数据结构
|
/// </summary>
|
[StructLayout(LayoutKind.Sequential)]
|
public struct RGBQUAD
|
{
|
/// <summary>
|
/// 蓝色的强度。
|
/// </summary>
|
public byte rgbBlue;
|
/// <summary>
|
/// 绿色的颜色强度。
|
/// </summary>
|
public byte rgbGreen;
|
/// <summary>
|
/// 红色的强度。
|
/// </summary>
|
public byte rgbRed;
|
/// <summary>
|
/// 此成员为保留成员,必须为零。
|
/// </summary>
|
public byte rgbReserved;
|
}
|
|
// 正确实现 BITMAPINFO 结构体
|
/// <summary>
|
/// BITMAPINFO数据结构体
|
/// </summary>
|
[StructLayout(LayoutKind.Sequential)]
|
public struct BITMAPINFO
|
{
|
/// <summary>
|
/// 一个 BITMAPINFOHEADER 结构,其中包含有关颜色格式维度的信息。
|
/// </summary>
|
public BITMAPINFOHEADER bmiHeader;
|
|
// 使用 InlineArray 特性处理可变长度颜色表
|
/// <summary>
|
/// RGBQUAD 数组。 构成颜色表的数组的元素。
|
/// </summary>
|
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 1)]
|
public RGBQUAD[] bmiColors;
|
}
|
}
|