using OpenCvSharp;
using System;
using System.Drawing;
using System.Drawing.Drawing2D;
using System.IO;
namespace OpenCVTest
{
class Program
{
///
/// http://wiki.opencv.org.cn/index.php/Cxcore%E6%95%B0%E7%BB%84%E6%93%8D%E4%BD%9C#CreateImage 教程
///
///
static void Main(string[] args)
{
Color FgClr= ColorTranslator.FromHtml("#FFBF53");
Color BgClr=ColorTranslator.FromHtml("#0040AC");
Bitmap bm = new System.Drawing.Bitmap(8, 8);
bm.SetPixel(0, 0, FgClr);
bm.SetPixel(0, 1, BgClr);
bm.SetPixel(0, 2, BgClr);
bm.SetPixel(0, 3, BgClr);
bm.SetPixel(0, 4, FgClr);
bm.SetPixel(0, 5, BgClr);
bm.SetPixel(0, 6, BgClr);
bm.SetPixel(0, 7, BgClr);
bm.SetPixel(1, 0, BgClr);
bm.SetPixel(1, 1, BgClr);
bm.SetPixel(1, 2, BgClr);
bm.SetPixel(1, 3, BgClr);
bm.SetPixel(1, 4, BgClr);
bm.SetPixel(1, 5, BgClr);
bm.SetPixel(1, 6, BgClr);
bm.SetPixel(1, 7, BgClr);
bm.SetPixel(2, 0, BgClr);
bm.SetPixel(2, 1, BgClr);
bm.SetPixel(2, 2, FgClr);
bm.SetPixel(2, 3, BgClr);
bm.SetPixel(2, 4, BgClr);
bm.SetPixel(2, 5, BgClr);
bm.SetPixel(2, 6, FgClr);
bm.SetPixel(2, 7, BgClr);
bm.SetPixel(3, 0, BgClr);
bm.SetPixel(3, 1, BgClr);
bm.SetPixel(3, 2, BgClr);
bm.SetPixel(3, 3, BgClr);
bm.SetPixel(3, 4, BgClr);
bm.SetPixel(3, 5, BgClr);
bm.SetPixel(3, 6, BgClr);
bm.SetPixel(3, 7, BgClr);
bm.SetPixel(4, 0, FgClr);
bm.SetPixel(4, 1, BgClr);
bm.SetPixel(4, 2, BgClr);
bm.SetPixel(4, 3, BgClr);
bm.SetPixel(4, 4, FgClr);
bm.SetPixel(4, 5, BgClr);
bm.SetPixel(4, 6, BgClr);
bm.SetPixel(4, 7, BgClr);
bm.SetPixel(5, 0, BgClr);
bm.SetPixel(5, 1, BgClr);
bm.SetPixel(5, 2, BgClr);
bm.SetPixel(5, 3, BgClr);
bm.SetPixel(5, 4, BgClr);
bm.SetPixel(5, 5, BgClr);
bm.SetPixel(5, 6, BgClr);
bm.SetPixel(5, 7, BgClr);
bm.SetPixel(6, 0, BgClr);
bm.SetPixel(6, 1, BgClr);
bm.SetPixel(6, 2, FgClr);
bm.SetPixel(6, 3, BgClr);
bm.SetPixel(6, 4, BgClr);
bm.SetPixel(6, 5, BgClr);
bm.SetPixel(6, 6, FgClr);
bm.SetPixel(6, 7, BgClr);
bm.SetPixel(7, 0, BgClr);
bm.SetPixel(7, 1, BgClr);
bm.SetPixel(7, 2, BgClr);
bm.SetPixel(7, 3, BgClr);
bm.SetPixel(7, 4, BgClr);
bm.SetPixel(7, 5, BgClr);
bm.SetPixel(7, 6, BgClr);
bm.SetPixel(7, 7, BgClr);
Graphics graphics = Graphics.FromImage(bm);
//graphics.Clear(Color.Transparent);
//HatchBrush myHatchBrush = new HatchBrush(HatchStyle.Percent10, Color.Blue, Color.Transparent);
//graphics.FillRectangle(myHatchBrush, 0, 0,300, 300);
graphics.Save();
graphics.Dispose();
MemoryStream ms = new MemoryStream();
bm.Save(ms, System.Drawing.Imaging.ImageFormat.Png);
byte[] arr = new byte[ms.Length];
ms.Position = 0;
ms.Read(arr, 0, (int)ms.Length);
ms.Close();
var a = "data:image/png;base64," + Convert.ToBase64String(arr);
//Graphics 类还有很多绘图方法可以绘制 直线、曲线、圆等等
//image.Save(sIconFileName, System.Drawing.Imaging.ImageFormat.Png);
//源码 https://gitee.com/CrazyIterBin/opencvsharp.git
// Mat base_img = Cv2.ImRead(@"F:/20191204104138.jpg");
//get_answer_from_sheet(base_img);
}
public static void get_answer_from_sheet(Mat base_img)
{
Cv2.ImShow("src", base_img);
Mat gray = new Mat();
Cv2.CvtColor(base_img, gray, ColorConversionCodes.BGR2GRAY);
}
public static void get_init_process_img(Mat roi_img) {
Mat h = new Mat();
Cv2.Sobel(roi_img, h, MatType.CV_32F, 0, 1, -1);
Mat v = new Mat();
Cv2.Sobel(roi_img, v, MatType.CV_32F, 1, 0, -1);
Mat img = new Mat();
Cv2.Add(h, v,img);
Cv2.ConvertScaleAbs(img,img);
Cv2.GaussianBlur(img, img, new OpenCvSharp.Size { Width = 3, Height = 3 }, 0);
Cv2.Threshold(img, img, 120, 255, ThresholdTypes.Binary);
Cv2.Erode(img, img, InputArray.Create(new int[1, 1]),iterations:1);
Cv2.Dilate(img, img, InputArray.Create(new int[1, 1]), iterations: 2);
Cv2.Erode(img, img, InputArray.Create(new int[1, 1]), iterations: 1);
Cv2.Dilate(img, img, InputArray.Create(new int[1, 1]), iterations:2);
}
public static void auto_canny(Mat image, double sigma = 0.33) {
}
public static void median(Mat image) {
float[] buf = new float[image.Rows* image.Cols];
for (int i = 0; i < image.Rows; i++) {
for (int j = 0; j < image.Cols; j++)
{
buf[i * image.Cols + j] = (float)image.Ptr(i, j);
}
}
}
}
}