CDecide.cs 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311
  1. using GxIAPINET;
  2. using System;
  3. using System.Collections.Generic;
  4. using System.Linq;
  5. using System.Text;
  6. using System.Threading.Tasks;
  7. namespace TeamAAS_VP.Core.GalaxyMethod
  8. {
  9. public static class CDecide
  10. {
  11. public const uint GVSP_PIX_MONO = 0x01000000; ///<判断是否为MONO格式的掩码
  12. public const uint GVSP_PIX_RGB = 0x02000000; ///<判断是否为RGB格式的掩码
  13. public const uint GVSP_PIX_CUSTOM = 0x80000000; ///<判断是否为自定义格式的掩码
  14. public const uint GVSP_PIX_COLOR_MASK = 0xFF000000; ///<判断是否为彩色格式的掩码
  15. public const uint GVSP_PIX_ID_MASK = 0x0000FFFF; ///<将图像格式与下述宏定义做按位与(&)运算,可得到像素格式的ID
  16. /// <summary>
  17. /// 是否支持黑白
  18. /// </summary>
  19. public static bool GetISMono(uint nPixelFormat)
  20. {
  21. bool bIsMono = ((GVSP_PIX_COLOR_MASK & nPixelFormat) == GVSP_PIX_MONO);
  22. return bIsMono;
  23. }
  24. /// <summary>
  25. /// 是否支持彩色
  26. /// </summary>
  27. public static bool GetIsBayer(uint nPixelFormat)
  28. {
  29. bool bIsBayer = (((GVSP_PIX_ID_MASK & (uint)GX_PIXEL_FORMAT_ENTRY.GX_PIXEL_FORMAT_BAYER_GR8) <= (GVSP_PIX_ID_MASK & nPixelFormat)
  30. && (GVSP_PIX_ID_MASK & nPixelFormat) <= (GVSP_PIX_ID_MASK & (uint)GX_PIXEL_FORMAT_ENTRY.GX_PIXEL_FORMAT_BAYER_BG12))
  31. || ((GVSP_PIX_ID_MASK & (uint)GX_PIXEL_FORMAT_ENTRY.GX_PIXEL_FORMAT_BAYER_GR14) <= (GVSP_PIX_ID_MASK & nPixelFormat)
  32. && (GVSP_PIX_ID_MASK & nPixelFormat) <= (GVSP_PIX_ID_MASK & (uint)GX_PIXEL_FORMAT_ENTRY.GX_PIXEL_FORMAT_BAYER_BG14))
  33. || ((GVSP_PIX_ID_MASK & (uint)GX_PIXEL_FORMAT_ENTRY.GX_PIXEL_FORMAT_BAYER_GR16) <= (GVSP_PIX_ID_MASK & nPixelFormat)
  34. && (GVSP_PIX_ID_MASK & nPixelFormat) <= (GVSP_PIX_ID_MASK & (uint)GX_PIXEL_FORMAT_ENTRY.GX_PIXEL_FORMAT_BAYER_BG16)));
  35. return bIsBayer;
  36. }
  37. /// <summary>
  38. /// 是否支持RGB
  39. /// </summary>
  40. public static bool GetIsRGB(uint nPixelFormat)
  41. {
  42. bool bIsBayer = ((GVSP_PIX_COLOR_MASK & nPixelFormat) == GVSP_PIX_RGB);
  43. return bIsBayer;
  44. }
  45. /// <summary>
  46. /// 是否支持RGB8
  47. /// </summary>
  48. public static bool GetIsRGB8(uint nPixelFormat)
  49. {
  50. bool bIsRGB8 = ((nPixelFormat == (uint)GX_PIXEL_FORMAT_ENTRY.GX_PIXEL_FORMAT_RGB8)
  51. || (nPixelFormat == (uint)GX_PIXEL_FORMAT_ENTRY.GX_PIXEL_FORMAT_BGR8));
  52. return bIsRGB8;
  53. }
  54. /// <summary>
  55. /// 是否为黑白
  56. /// </summary>
  57. public static bool GetIsGray(uint nPixelFormat)
  58. {
  59. bool bIsGray = (GetISMono(nPixelFormat)) && (!GetIsBayer(nPixelFormat)) && (!GetIsRGB(nPixelFormat));
  60. return bIsGray;
  61. }
  62. /// <summary>
  63. /// 根据像素格式获取对应ID
  64. /// </summary>
  65. public static void GetConvertPixelFormat(String strPixelFormat, ref uint nPixelFormatValue)
  66. {
  67. switch (strPixelFormat)
  68. {
  69. case "Mono8":
  70. nPixelFormatValue = (uint)GX_PIXEL_FORMAT_ENTRY.GX_PIXEL_FORMAT_MONO8;
  71. break;
  72. case "BayerRG8":
  73. nPixelFormatValue = (uint)GX_PIXEL_FORMAT_ENTRY.GX_PIXEL_FORMAT_BAYER_RG8;
  74. break;
  75. case "BayerGB8":
  76. nPixelFormatValue = (uint)GX_PIXEL_FORMAT_ENTRY.GX_PIXEL_FORMAT_BAYER_GB8;
  77. break;
  78. case "BayerGR8":
  79. nPixelFormatValue = (uint)GX_PIXEL_FORMAT_ENTRY.GX_PIXEL_FORMAT_BAYER_GR8;
  80. break;
  81. case "BayerBG8":
  82. nPixelFormatValue = (uint)GX_PIXEL_FORMAT_ENTRY.GX_PIXEL_FORMAT_BAYER_BG8;
  83. break;
  84. case "RGB8":
  85. nPixelFormatValue = (uint)GX_PIXEL_FORMAT_ENTRY.GX_PIXEL_FORMAT_RGB8;
  86. break;
  87. case "BGR8":
  88. nPixelFormatValue = (uint)GX_PIXEL_FORMAT_ENTRY.GX_PIXEL_FORMAT_BGR8;
  89. break;
  90. case "Mono10":
  91. nPixelFormatValue = (uint)GX_PIXEL_FORMAT_ENTRY.GX_PIXEL_FORMAT_MONO10;
  92. break;
  93. case "Mono10_Packed":
  94. nPixelFormatValue = (uint)GX_PIXEL_FORMAT_ENTRY.GX_PIXEL_FORMAT_MONO10_PACKED;
  95. break;
  96. case "Mono10_P":
  97. nPixelFormatValue = (uint)GX_PIXEL_FORMAT_ENTRY.GX_PIXEL_FORMAT_MONO10_P;
  98. break;
  99. case "BayerRG10":
  100. nPixelFormatValue = (uint)GX_PIXEL_FORMAT_ENTRY.GX_PIXEL_FORMAT_BAYER_RG10;
  101. break;
  102. case "BayerRG10_P":
  103. nPixelFormatValue = (uint)GX_PIXEL_FORMAT_ENTRY.GX_PIXEL_FORMAT_BAYER_RG10_P;
  104. break;
  105. case "BayerRG10_Packet":
  106. nPixelFormatValue = (uint)GX_PIXEL_FORMAT_ENTRY.GX_PIXEL_FORMAT_BAYER_RG10_PACKED;
  107. break;
  108. case "BayerGB10":
  109. nPixelFormatValue = (uint)GX_PIXEL_FORMAT_ENTRY.GX_PIXEL_FORMAT_BAYER_GB10;
  110. break;
  111. case "BayerGB10_P":
  112. nPixelFormatValue = (uint)GX_PIXEL_FORMAT_ENTRY.GX_PIXEL_FORMAT_BAYER_GB10_P;
  113. break;
  114. case "BayerGB10_Packet":
  115. nPixelFormatValue = (uint)GX_PIXEL_FORMAT_ENTRY.GX_PIXEL_FORMAT_BAYER_GB10_PACKED;
  116. break;
  117. case "BayerGR10":
  118. nPixelFormatValue = (uint)GX_PIXEL_FORMAT_ENTRY.GX_PIXEL_FORMAT_BAYER_GR10;
  119. break;
  120. case "BayerGR10_P":
  121. nPixelFormatValue = (uint)GX_PIXEL_FORMAT_ENTRY.GX_PIXEL_FORMAT_BAYER_GR10_P;
  122. break;
  123. case "BayerGR10_Packet":
  124. nPixelFormatValue = (uint)GX_PIXEL_FORMAT_ENTRY.GX_PIXEL_FORMAT_BAYER_GR10_PACKED;
  125. break;
  126. case "BayerBG10":
  127. nPixelFormatValue = (uint)GX_PIXEL_FORMAT_ENTRY.GX_PIXEL_FORMAT_BAYER_BG10;
  128. break;
  129. case "BayerBG10_P":
  130. nPixelFormatValue = (uint)GX_PIXEL_FORMAT_ENTRY.GX_PIXEL_FORMAT_BAYER_BG10_P;
  131. break;
  132. case "BayerBG10_Packet":
  133. nPixelFormatValue = (uint)GX_PIXEL_FORMAT_ENTRY.GX_PIXEL_FORMAT_BAYER_BG10_PACKED;
  134. break;
  135. case "Mono12":
  136. nPixelFormatValue = (uint)GX_PIXEL_FORMAT_ENTRY.GX_PIXEL_FORMAT_MONO12;
  137. break;
  138. case "Mono12_Packed":
  139. nPixelFormatValue = (uint)GX_PIXEL_FORMAT_ENTRY.GX_PIXEL_FORMAT_MONO12_PACKED;
  140. break;
  141. case "Mono12_P":
  142. nPixelFormatValue = (uint)GX_PIXEL_FORMAT_ENTRY.GX_PIXEL_FORMAT_MONO12_P;
  143. break;
  144. case "BayerRG12":
  145. nPixelFormatValue = (uint)GX_PIXEL_FORMAT_ENTRY.GX_PIXEL_FORMAT_BAYER_RG12;
  146. break;
  147. case "BayerRG12_P":
  148. nPixelFormatValue = (uint)GX_PIXEL_FORMAT_ENTRY.GX_PIXEL_FORMAT_BAYER_RG12_P;
  149. break;
  150. case "BayerRG12_Packet":
  151. nPixelFormatValue = (uint)GX_PIXEL_FORMAT_ENTRY.GX_PIXEL_FORMAT_BAYER_RG12_PACKED;
  152. break;
  153. case "BayerGB12":
  154. nPixelFormatValue = (uint)GX_PIXEL_FORMAT_ENTRY.GX_PIXEL_FORMAT_BAYER_GB12;
  155. break;
  156. case "BayerGB12_P":
  157. nPixelFormatValue = (uint)GX_PIXEL_FORMAT_ENTRY.GX_PIXEL_FORMAT_BAYER_GB12_P;
  158. break;
  159. case "BayerGB12_Packet":
  160. nPixelFormatValue = (uint)GX_PIXEL_FORMAT_ENTRY.GX_PIXEL_FORMAT_BAYER_GB12_PACKED;
  161. break;
  162. case "BayerGR12":
  163. nPixelFormatValue = (uint)GX_PIXEL_FORMAT_ENTRY.GX_PIXEL_FORMAT_BAYER_GR12;
  164. break;
  165. case "BayerGR12_P":
  166. nPixelFormatValue = (uint)GX_PIXEL_FORMAT_ENTRY.GX_PIXEL_FORMAT_BAYER_GR12_P;
  167. break;
  168. case "BayerGR12_Packet":
  169. nPixelFormatValue = (uint)GX_PIXEL_FORMAT_ENTRY.GX_PIXEL_FORMAT_BAYER_GR12_PACKED;
  170. break;
  171. case "BayerBG12":
  172. nPixelFormatValue = (uint)GX_PIXEL_FORMAT_ENTRY.GX_PIXEL_FORMAT_BAYER_BG12;
  173. break;
  174. case "BayerBG12_P":
  175. nPixelFormatValue = (uint)GX_PIXEL_FORMAT_ENTRY.GX_PIXEL_FORMAT_BAYER_BG12_P;
  176. break;
  177. case "BayerBG12_Packet":
  178. nPixelFormatValue = (uint)GX_PIXEL_FORMAT_ENTRY.GX_PIXEL_FORMAT_BAYER_BG12_PACKED;
  179. break;
  180. case "Mono14":
  181. nPixelFormatValue = (uint)GX_PIXEL_FORMAT_ENTRY.GX_PIXEL_FORMAT_MONO14;
  182. break;
  183. case "Mono14_P":
  184. nPixelFormatValue = (uint)GX_PIXEL_FORMAT_ENTRY.GX_PIXEL_FORMAT_MONO14_P;
  185. break;
  186. case "BayerRG14":
  187. nPixelFormatValue = (uint)GX_PIXEL_FORMAT_ENTRY.GX_PIXEL_FORMAT_BAYER_RG14;
  188. break;
  189. case "BayerRG14_P":
  190. nPixelFormatValue = (uint)GX_PIXEL_FORMAT_ENTRY.GX_PIXEL_FORMAT_BAYER_RG14_P;
  191. break;
  192. case "BayerGB14":
  193. nPixelFormatValue = (uint)GX_PIXEL_FORMAT_ENTRY.GX_PIXEL_FORMAT_BAYER_GB14;
  194. break;
  195. case "BayerGB14_P":
  196. nPixelFormatValue = (uint)GX_PIXEL_FORMAT_ENTRY.GX_PIXEL_FORMAT_BAYER_GB14_P;
  197. break;
  198. case "BayerGR14":
  199. nPixelFormatValue = (uint)GX_PIXEL_FORMAT_ENTRY.GX_PIXEL_FORMAT_BAYER_GR14;
  200. break;
  201. case "BayerGR14_P":
  202. nPixelFormatValue = (uint)GX_PIXEL_FORMAT_ENTRY.GX_PIXEL_FORMAT_BAYER_GR14_P;
  203. break;
  204. case "BayerBG14":
  205. nPixelFormatValue = (uint)GX_PIXEL_FORMAT_ENTRY.GX_PIXEL_FORMAT_BAYER_BG14;
  206. break;
  207. case "BayerBG14_P":
  208. nPixelFormatValue = (uint)GX_PIXEL_FORMAT_ENTRY.GX_PIXEL_FORMAT_BAYER_BG14_P;
  209. break;
  210. case "Mono16":
  211. nPixelFormatValue = (uint)GX_PIXEL_FORMAT_ENTRY.GX_PIXEL_FORMAT_MONO16;
  212. break;
  213. case "BayerRG16":
  214. nPixelFormatValue = (uint)GX_PIXEL_FORMAT_ENTRY.GX_PIXEL_FORMAT_BAYER_RG16;
  215. break;
  216. case "BayerGB16":
  217. nPixelFormatValue = (uint)GX_PIXEL_FORMAT_ENTRY.GX_PIXEL_FORMAT_BAYER_GB16;
  218. break;
  219. case "BayerGR16":
  220. nPixelFormatValue = (uint)GX_PIXEL_FORMAT_ENTRY.GX_PIXEL_FORMAT_BAYER_GR16;
  221. break;
  222. case "BayerBG16":
  223. nPixelFormatValue = (uint)GX_PIXEL_FORMAT_ENTRY.GX_PIXEL_FORMAT_BAYER_BG16;
  224. break;
  225. case "R8":
  226. nPixelFormatValue = (uint)GX_PIXEL_FORMAT_ENTRY.GX_PIXEL_FORMAT_R8;
  227. break;
  228. case "B8":
  229. nPixelFormatValue = (uint)GX_PIXEL_FORMAT_ENTRY.GX_PIXEL_FORMAT_B8;
  230. break;
  231. case "G8":
  232. nPixelFormatValue = (uint)GX_PIXEL_FORMAT_ENTRY.GX_PIXEL_FORMAT_G8;
  233. break;
  234. case "YUV422_8":
  235. nPixelFormatValue = (uint)GX_PIXEL_FORMAT_ENTRY.GX_PIXEL_FORMAT_YUV422_8;
  236. break;
  237. case "YUV422_8_UYVY":
  238. nPixelFormatValue = (uint)GX_PIXEL_FORMAT_ENTRY.GX_PIXEL_FORMAT_YUV422_8_UYVY;
  239. break;
  240. default:
  241. nPixelFormatValue = 0;
  242. break;
  243. }
  244. }
  245. }
  246. }