Program.cs 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. using OpenCvSharp;
  2. using System;
  3. using System.Drawing;
  4. using System.Drawing.Drawing2D;
  5. using System.IO;
  6. namespace OpenCVTest
  7. {
  8. class Program
  9. {
  10. /// <summary>
  11. /// http://wiki.opencv.org.cn/index.php/Cxcore%E6%95%B0%E7%BB%84%E6%93%8D%E4%BD%9C#CreateImage 教程
  12. /// </summary>
  13. /// <param name="args"></param>
  14. static void Main(string[] args)
  15. {
  16. Color FgClr= ColorTranslator.FromHtml("#FFBF53");
  17. Color BgClr=ColorTranslator.FromHtml("#0040AC");
  18. Bitmap bm = new System.Drawing.Bitmap(8, 8);
  19. bm.SetPixel(0, 0, FgClr);
  20. bm.SetPixel(0, 1, BgClr);
  21. bm.SetPixel(0, 2, BgClr);
  22. bm.SetPixel(0, 3, BgClr);
  23. bm.SetPixel(0, 4, FgClr);
  24. bm.SetPixel(0, 5, BgClr);
  25. bm.SetPixel(0, 6, BgClr);
  26. bm.SetPixel(0, 7, BgClr);
  27. bm.SetPixel(1, 0, BgClr);
  28. bm.SetPixel(1, 1, BgClr);
  29. bm.SetPixel(1, 2, BgClr);
  30. bm.SetPixel(1, 3, BgClr);
  31. bm.SetPixel(1, 4, BgClr);
  32. bm.SetPixel(1, 5, BgClr);
  33. bm.SetPixel(1, 6, BgClr);
  34. bm.SetPixel(1, 7, BgClr);
  35. bm.SetPixel(2, 0, BgClr);
  36. bm.SetPixel(2, 1, BgClr);
  37. bm.SetPixel(2, 2, FgClr);
  38. bm.SetPixel(2, 3, BgClr);
  39. bm.SetPixel(2, 4, BgClr);
  40. bm.SetPixel(2, 5, BgClr);
  41. bm.SetPixel(2, 6, FgClr);
  42. bm.SetPixel(2, 7, BgClr);
  43. bm.SetPixel(3, 0, BgClr);
  44. bm.SetPixel(3, 1, BgClr);
  45. bm.SetPixel(3, 2, BgClr);
  46. bm.SetPixel(3, 3, BgClr);
  47. bm.SetPixel(3, 4, BgClr);
  48. bm.SetPixel(3, 5, BgClr);
  49. bm.SetPixel(3, 6, BgClr);
  50. bm.SetPixel(3, 7, BgClr);
  51. bm.SetPixel(4, 0, FgClr);
  52. bm.SetPixel(4, 1, BgClr);
  53. bm.SetPixel(4, 2, BgClr);
  54. bm.SetPixel(4, 3, BgClr);
  55. bm.SetPixel(4, 4, FgClr);
  56. bm.SetPixel(4, 5, BgClr);
  57. bm.SetPixel(4, 6, BgClr);
  58. bm.SetPixel(4, 7, BgClr);
  59. bm.SetPixel(5, 0, BgClr);
  60. bm.SetPixel(5, 1, BgClr);
  61. bm.SetPixel(5, 2, BgClr);
  62. bm.SetPixel(5, 3, BgClr);
  63. bm.SetPixel(5, 4, BgClr);
  64. bm.SetPixel(5, 5, BgClr);
  65. bm.SetPixel(5, 6, BgClr);
  66. bm.SetPixel(5, 7, BgClr);
  67. bm.SetPixel(6, 0, BgClr);
  68. bm.SetPixel(6, 1, BgClr);
  69. bm.SetPixel(6, 2, FgClr);
  70. bm.SetPixel(6, 3, BgClr);
  71. bm.SetPixel(6, 4, BgClr);
  72. bm.SetPixel(6, 5, BgClr);
  73. bm.SetPixel(6, 6, FgClr);
  74. bm.SetPixel(6, 7, BgClr);
  75. bm.SetPixel(7, 0, BgClr);
  76. bm.SetPixel(7, 1, BgClr);
  77. bm.SetPixel(7, 2, BgClr);
  78. bm.SetPixel(7, 3, BgClr);
  79. bm.SetPixel(7, 4, BgClr);
  80. bm.SetPixel(7, 5, BgClr);
  81. bm.SetPixel(7, 6, BgClr);
  82. bm.SetPixel(7, 7, BgClr);
  83. Graphics graphics = Graphics.FromImage(bm);
  84. //graphics.Clear(Color.Transparent);
  85. //HatchBrush myHatchBrush = new HatchBrush(HatchStyle.Percent10, Color.Blue, Color.Transparent);
  86. //graphics.FillRectangle(myHatchBrush, 0, 0,300, 300);
  87. graphics.Save();
  88. graphics.Dispose();
  89. MemoryStream ms = new MemoryStream();
  90. bm.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
  91. byte[] arr = new byte[ms.Length];
  92. ms.Position = 0;
  93. ms.Read(arr, 0, (int)ms.Length);
  94. ms.Close();
  95. var a = "data:image/png;base64," + Convert.ToBase64String(arr);
  96. //Graphics 类还有很多绘图方法可以绘制 直线、曲线、圆等等
  97. //image.Save(sIconFileName, System.Drawing.Imaging.ImageFormat.Png);
  98. //源码 https://gitee.com/CrazyIterBin/opencvsharp.git
  99. // Mat base_img = Cv2.ImRead(@"F:/20191204104138.jpg");
  100. //get_answer_from_sheet(base_img);
  101. }
  102. public static void get_answer_from_sheet(Mat base_img)
  103. {
  104. Cv2.ImShow("src", base_img);
  105. Mat gray = new Mat();
  106. Cv2.CvtColor(base_img, gray, ColorConversionCodes.BGR2GRAY);
  107. }
  108. public static void get_init_process_img(Mat roi_img) {
  109. Mat h = new Mat();
  110. Cv2.Sobel(roi_img, h, MatType.CV_32F, 0, 1, -1);
  111. Mat v = new Mat();
  112. Cv2.Sobel(roi_img, v, MatType.CV_32F, 1, 0, -1);
  113. Mat img = new Mat();
  114. Cv2.Add(h, v,img);
  115. Cv2.ConvertScaleAbs(img,img);
  116. Cv2.GaussianBlur(img, img, new OpenCvSharp.Size { Width = 3, Height = 3 }, 0);
  117. Cv2.Threshold(img, img, 120, 255, ThresholdTypes.Binary);
  118. Cv2.Erode(img, img, InputArray.Create(new int[1, 1]),iterations:1);
  119. Cv2.Dilate(img, img, InputArray.Create(new int[1, 1]), iterations: 2);
  120. Cv2.Erode(img, img, InputArray.Create(new int[1, 1]), iterations: 1);
  121. Cv2.Dilate(img, img, InputArray.Create(new int[1, 1]), iterations:2);
  122. }
  123. public static void auto_canny(Mat image, double sigma = 0.33) {
  124. }
  125. public static void median(Mat image) {
  126. float[] buf = new float[image.Rows* image.Cols];
  127. for (int i = 0; i < image.Rows; i++) {
  128. for (int j = 0; j < image.Cols; j++)
  129. {
  130. buf[i * image.Cols + j] = (float)image.Ptr(i, j);
  131. }
  132. }
  133. }
  134. }
  135. }