public static int NewPointY(int y3old, int y1new, int y2new) // old 는 기준처방전 new 는 실제처방전, 1 과 2는 기준좌표 두점을 말하고, 모르는 제3의 new 를 찾는 함수 { ///////////// ini 객체 생성 시작 ///////////////////////////////////////////////////// //현재 프로그램이 실행되고 있는정보 가져오기: 디버깅 모드라면 bin/debug/프로그램명.exe FileInfo exefileinfo = new FileInfo(@"C:\Program Files\PLOCR\PLOCR.exe"); string pathini = exefileinfo.Directory.FullName.ToString(); //프로그램 실행되고 있는데 path 가져오기 string fileName = @"\PLOCRconfig.ini"; // 환경설정 파일명 string filePath = pathini + fileName; //ini 파일 경로 DocumentAnalysis.IniUtil ini = new DocumentAnalysis.IniUtil(filePath); // 만들어 놓았던 iniUtil 객체 생성(생성자 인자로 파일경로 정보 넘겨줌) //////////// ini 객체 생성 끝 ///////////////////////////////////////////////////////// int y1old = int.Parse(ini.GetIniValue("스캔으로 찾은 좌표1번", "Y")); int y2old = int.Parse(ini.GetIniValue("스캔으로 찾은 좌표2번", "Y")); double y3new = 0; if ((y3old - y1old) < 0) { y3new = y1new - (Math.Abs((y3old - y1old)) * Math.Abs((y2new - y1new)) / Math.Abs((y2old - y1old))); // x1old 는 기준처방의 1번좌표, x2old 는 기준처방의 2번좌표, x3old 는 사용자가 지정한 기준처방의 좌표 } // x1new 는 실제처방의 1번좌표, x2new 는 실제처방의 2번좌표, x3new 는 찾으려고 하는 좌표 else if ((y3old - y1old) > 0) { y3new = Math.Abs((y3old - y1old)) * Math.Abs((y2new - y1new)) / Math.Abs((y2old - y1old)) + y1new; } return((int)y3new); }
public static Bitmap thick(Bitmap source) // 선 굵게, 24비트로 넣어줘야함 { ///////////// ini 객체 생성 시작 ///////////////////////////////////////////////////// //현재 프로그램이 실행되고 있는정보 가져오기: 디버깅 모드라면 bin/debug/프로그램명.exe FileInfo exefileinfo = new FileInfo(@"C:\Program Files\PLOCR\PLOCR.exe"); string pathini = exefileinfo.Directory.FullName.ToString(); //프로그램 실행되고 있는데 path 가져오기 string fileName = @"\PLOCRconfig.ini"; // 환경설정 파일명 string filePath = pathini + fileName; //ini 파일 경로 DocumentAnalysis.IniUtil ini = new DocumentAnalysis.IniUtil(filePath); // 만들어 놓았던 iniUtil 객체 생성(생성자 인자로 파일경로 정보 넘겨줌) //////////// ini 객체 생성 끝 ///////////////////////////////////////////////////////// int order = int.Parse(ini.GetIniValue("선굵기값", "굵게횟수")); for (int i = 0; i < order; i++) { Bitmap tmp = (Bitmap)source; // 중요! 한번 이미지 처리가 끝난 비트맵 source 는 clone 함수로 보내기 전에 다시 한번 (Bitmap) 처리 해줘야함, 이유는 잘 모르겠음 // convert to 24 bits per pixel source = imageProcess.Clone(tmp, PixelFormat.Format24bppRgb); // delete old image tmp.Dispose(); Erosion filter = new Erosion(); filter.ApplyInPlace(source);; } return(source); }
public static Bitmap originalcheck(Bitmap source) { ///////////// ini 객체 생성 시작 ///////////////////////////////////////////////////// //현재 프로그램이 실행되고 있는정보 가져오기: 디버깅 모드라면 bin/debug/프로그램명.exe FileInfo exefileinfo = new FileInfo(@"C:\Program Files\PLOCR\PLOCR.exe"); string pathini = exefileinfo.Directory.FullName.ToString(); //프로그램 실행되고 있는데 path 가져오기 string fileName = @"\PLOCRconfig.ini"; // 환경설정 파일명 string filePath = pathini + fileName; //ini 파일 경로 DocumentAnalysis.IniUtil ini = new DocumentAnalysis.IniUtil(filePath); // 만들어 놓았던 iniUtil 객체 생성(생성자 인자로 파일경로 정보 넘겨줌) //////////// ini 객체 생성 끝 ///////////////////////////////////////////////////////// string exeNo1 = ini.GetIniValue("실행 순서", "1단계"); string exeNo2 = ini.GetIniValue("실행 순서", "2단계"); string exeNo3 = ini.GetIniValue("실행 순서", "3단계"); string exeNo4 = ini.GetIniValue("실행 순서", "4단계"); string exeNo5 = ini.GetIniValue("실행 순서", "5단계"); string exeNo6 = ini.GetIniValue("실행 순서", "6단계"); string exeNo7 = ini.GetIniValue("실행 순서", "7단계"); if (exeNo1 == "원본" || exeNo2 == "원본" || exeNo3 == "원본" || exeNo4 == "원본" || exeNo5 == "원본" || exeNo6 == "원본" || exeNo7 == "원본") { string path = @"C:\Program Files\PLOCR\prescription.png"; source = (Bitmap)Bitmap.FromFile(path); } return(source); }
public static Bitmap RGBfilter(Bitmap source) // rgb 필터 { ///////////// ini 객체 생성 시작 ///////////////////////////////////////////////////// //현재 프로그램이 실행되고 있는정보 가져오기: 디버깅 모드라면 bin/debug/프로그램명.exe FileInfo exefileinfo = new FileInfo(@"C:\Program Files\PLOCR\PLOCR.exe"); string pathini = exefileinfo.Directory.FullName.ToString(); //프로그램 실행되고 있는데 path 가져오기 string fileName = @"\PLOCRconfig.ini"; // 환경설정 파일명 string filePath = pathini + fileName; //ini 파일 경로 DocumentAnalysis.IniUtil ini = new DocumentAnalysis.IniUtil(filePath); // 만들어 놓았던 iniUtil 객체 생성(생성자 인자로 파일경로 정보 넘겨줌) //////////// ini 객체 생성 끝 ///////////////////////////////////////////////////////// int redMin = int.Parse(ini.GetIniValue("색상필터값", "RedMin")); int redMax = int.Parse(ini.GetIniValue("색상필터값", "RedMax")); int greenMin = int.Parse(ini.GetIniValue("색상필터값", "GreenMin")); int greenMax = int.Parse(ini.GetIniValue("색상필터값", "GreenMax")); int blueMin = int.Parse(ini.GetIniValue("색상필터값", "BlueMin")); int blueMax = int.Parse(ini.GetIniValue("색상필터값", "BlueMax")); // create filter ColorFiltering filter = new ColorFiltering(); // set color ranges to keep filter.Red = new IntRange(redMin, redMax); filter.Green = new IntRange(greenMin, greenMax); filter.Blue = new IntRange(blueMin, blueMax); Bitmap processedImage = filter.Apply(source); return(processedImage); }
// 밝게 public static Bitmap bright(Bitmap source) { ///////////// ini 객체 생성 시작 ///////////////////////////////////////////////////// //현재 프로그램이 실행되고 있는정보 가져오기: 디버깅 모드라면 bin/debug/프로그램명.exe FileInfo exefileinfo = new FileInfo(@"C:\Program Files\PLOCR\PLOCR.exe"); string pathini = exefileinfo.Directory.FullName.ToString(); //프로그램 실행되고 있는데 path 가져오기 string fileName = @"\PLOCRconfig.ini"; // 환경설정 파일명 string filePath = pathini + fileName; //ini 파일 경로 DocumentAnalysis.IniUtil ini = new DocumentAnalysis.IniUtil(filePath); // 만들어 놓았던 iniUtil 객체 생성(생성자 인자로 파일경로 정보 넘겨줌) //////////// ini 객체 생성 끝 ///////////////////////////////////////////////////////// int order = int.Parse(ini.GetIniValue("밝기값", "밝게횟수")); for (int i = 0; i < order; i++) { // create filter BrightnessCorrection filter = new BrightnessCorrection(+10); // apply the filter filter.ApplyInPlace(source); } return source; }
public static Bitmap dark(Bitmap source) // 어둡게 { ///////////// ini 객체 생성 시작 ///////////////////////////////////////////////////// //현재 프로그램이 실행되고 있는정보 가져오기: 디버깅 모드라면 bin/debug/프로그램명.exe FileInfo exefileinfo = new FileInfo(@"C:\Program Files\PLOCR\PLOCR.exe"); string pathini = exefileinfo.Directory.FullName.ToString(); //프로그램 실행되고 있는데 path 가져오기 string fileName = @"\PLOCRconfig.ini"; // 환경설정 파일명 string filePath = pathini + fileName; //ini 파일 경로 DocumentAnalysis.IniUtil ini = new DocumentAnalysis.IniUtil(filePath); // 만들어 놓았던 iniUtil 객체 생성(생성자 인자로 파일경로 정보 넘겨줌) //////////// ini 객체 생성 끝 ///////////////////////////////////////////////////////// int order = int.Parse(ini.GetIniValue("밝기값", "어둡게횟수")); for (int i = 0; i < order; i++) { // create filter BrightnessCorrection filter = new BrightnessCorrection(-10); // apply the filter filter.ApplyInPlace(source); } return(source); }
public static Bitmap originalcheck(Bitmap source) { ///////////// ini 객체 생성 시작 ///////////////////////////////////////////////////// //현재 프로그램이 실행되고 있는정보 가져오기: 디버깅 모드라면 bin/debug/프로그램명.exe FileInfo exefileinfo = new FileInfo(@"C:\Program Files\PLOCR\PLOCR.exe"); string pathini = exefileinfo.Directory.FullName.ToString(); //프로그램 실행되고 있는데 path 가져오기 string fileName = @"\PLOCRconfig.ini"; // 환경설정 파일명 string filePath = pathini + fileName; //ini 파일 경로 DocumentAnalysis.IniUtil ini = new DocumentAnalysis.IniUtil(filePath); // 만들어 놓았던 iniUtil 객체 생성(생성자 인자로 파일경로 정보 넘겨줌) //////////// ini 객체 생성 끝 ///////////////////////////////////////////////////////// string exeNo1 = ini.GetIniValue("실행 순서", "1단계"); string exeNo2 = ini.GetIniValue("실행 순서", "2단계"); string exeNo3 = ini.GetIniValue("실행 순서", "3단계"); string exeNo4 = ini.GetIniValue("실행 순서", "4단계"); string exeNo5 = ini.GetIniValue("실행 순서", "5단계"); string exeNo6 = ini.GetIniValue("실행 순서", "6단계"); string exeNo7 = ini.GetIniValue("실행 순서", "7단계"); if (exeNo1 == "원본" || exeNo2 == "원본" || exeNo3 == "원본" || exeNo4 == "원본" || exeNo5 == "원본" || exeNo6 == "원본" || exeNo7 == "원본") { string path = @"C:\Program Files\PLOCR\prescription.png"; source = (Bitmap)Bitmap.FromFile(path); } return source; }
// 선 가늘게 public static Bitmap thin(Bitmap source) { ///////////// ini 객체 생성 시작 ///////////////////////////////////////////////////// //현재 프로그램이 실행되고 있는정보 가져오기: 디버깅 모드라면 bin/debug/프로그램명.exe FileInfo exefileinfo = new FileInfo(@"C:\Program Files\PLOCR\PLOCR.exe"); string pathini = exefileinfo.Directory.FullName.ToString(); //프로그램 실행되고 있는데 path 가져오기 string fileName = @"\PLOCRconfig.ini"; // 환경설정 파일명 string filePath = pathini + fileName; //ini 파일 경로 DocumentAnalysis.IniUtil ini = new DocumentAnalysis.IniUtil(filePath); // 만들어 놓았던 iniUtil 객체 생성(생성자 인자로 파일경로 정보 넘겨줌) //////////// ini 객체 생성 끝 ///////////////////////////////////////////////////////// int order = int.Parse(ini.GetIniValue("선굵기값", "가늘게횟수")); for (int i = 0; i < order; i++) { Bitmap tmp = (Bitmap)source; // 중요! 한번 이미지 처리가 끝난 비트맵 source 는 clone 함수로 보내기 전에 다시 한번 (Bitmap) 처리 해줘야함, 이유는 잘 모르겠음 // convert to 24 bits per pixel source = imageProcess.Clone(tmp, PixelFormat.Format24bppRgb); // delete old image tmp.Dispose(); Dilatation filter = new Dilatation(); filter.ApplyInPlace(source); } return source; }
// rgb 필터 public static Bitmap RGBfilter(Bitmap source) { ///////////// ini 객체 생성 시작 ///////////////////////////////////////////////////// //현재 프로그램이 실행되고 있는정보 가져오기: 디버깅 모드라면 bin/debug/프로그램명.exe FileInfo exefileinfo = new FileInfo(@"C:\Program Files\PLOCR\PLOCR.exe"); string pathini = exefileinfo.Directory.FullName.ToString(); //프로그램 실행되고 있는데 path 가져오기 string fileName = @"\PLOCRconfig.ini"; // 환경설정 파일명 string filePath = pathini + fileName; //ini 파일 경로 DocumentAnalysis.IniUtil ini = new DocumentAnalysis.IniUtil(filePath); // 만들어 놓았던 iniUtil 객체 생성(생성자 인자로 파일경로 정보 넘겨줌) //////////// ini 객체 생성 끝 ///////////////////////////////////////////////////////// int redMin = int.Parse(ini.GetIniValue("색상필터값", "RedMin")); int redMax = int.Parse(ini.GetIniValue("색상필터값", "RedMax")); int greenMin = int.Parse(ini.GetIniValue("색상필터값", "GreenMin")); int greenMax = int.Parse(ini.GetIniValue("색상필터값", "GreenMax")); int blueMin = int.Parse(ini.GetIniValue("색상필터값", "BlueMin")); int blueMax = int.Parse(ini.GetIniValue("색상필터값", "BlueMax")); // create filter ColorFiltering filter = new ColorFiltering(); // set color ranges to keep filter.Red = new IntRange(redMin, redMax); filter.Green = new IntRange(greenMin, greenMax); filter.Blue = new IntRange(blueMin, blueMax); Bitmap processedImage = filter.Apply(source); return processedImage; }
public static void calibration(int quad) { ///////////// ini 객체 생성 시작 ///////////////////////////////////////////////////// //현재 프로그램이 실행되고 있는정보 가져오기: 디버깅 모드라면 bin/debug/프로그램명.exe FileInfo exefileinfo = new FileInfo(@"C:\Program Files\PLOCR\PLOCR.exe"); string pathini = exefileinfo.Directory.FullName.ToString(); //프로그램 실행되고 있는데 path 가져오기 string fileName = @"\PLOCRconfig.ini"; // 환경설정 파일명 string filePath = pathini + fileName; //ini 파일 경로 DocumentAnalysis.IniUtil ini = new DocumentAnalysis.IniUtil(filePath); // 만들어 놓았던 iniUtil 객체 생성(생성자 인자로 파일경로 정보 넘겨줌) //////////// ini 객체 생성 끝 ///////////////////////////////////////////////////////// int order; int sX1 = 0, sX2 = 0, sY1 = 0, sY2 = 0; int specialX = int.Parse(ini.GetIniValue("특정좌표영역", "X")); int specialY = int.Parse(ini.GetIniValue("특정좌표영역", "Y")); order = quad - 1; string path = @"C:\Program Files\PLOCR\prescription.png"; Bitmap source = (Bitmap)Bitmap.FromFile(path); switch (order) { case 0: //1사분면일 경우 sX1 = (source.Width) / 2 + int.Parse(ini.GetIniValue("좌표1번", "X")); sY1 = int.Parse(ini.GetIniValue("좌표1번", "Y")); sX2 = (source.Width) / 2 + int.Parse(ini.GetIniValue("좌표2번", "X")); sY2 = int.Parse(ini.GetIniValue("좌표1번", "Y")); break; case 1: //2사분면일 경우 sX1 = int.Parse(ini.GetIniValue("좌표1번", "X")); sY1 = int.Parse(ini.GetIniValue("좌표1번", "Y")); sX2 = int.Parse(ini.GetIniValue("좌표2번", "X")); sY2 = int.Parse(ini.GetIniValue("좌표2번", "Y")); break; case 2: //3사분면일 경우 sX1 = int.Parse(ini.GetIniValue("좌표1번", "X")); sY1 = (source.Height) / 2 + int.Parse(ini.GetIniValue("좌표1번", "Y")); sX2 = int.Parse(ini.GetIniValue("좌표1번", "X")); sY2 = (source.Height) / 2 + int.Parse(ini.GetIniValue("좌표2번", "Y")); break; case 3: //4사분면일 경우 sX1 = (source.Width) / 2 + int.Parse(ini.GetIniValue("좌표1번", "X")); sY1 = (source.Height) / 2 + int.Parse(ini.GetIniValue("좌표1번", "Y")); sX2 = (source.Width) / 2 + int.Parse(ini.GetIniValue("좌표2번", "X")); sY2= (source.Height) / 2 + int.Parse(ini.GetIniValue("좌표2번", "Y")); break; case 4: //특정영역일 경우 sX1 = specialX + int.Parse(ini.GetIniValue("좌표1번", "X")); sY1 = specialY + int.Parse(ini.GetIniValue("좌표1번", "Y")); sX2 = specialX + int.Parse(ini.GetIniValue("좌표2번", "X")); sY2 = specialY + int.Parse(ini.GetIniValue("좌표2번", "Y")); break; } }
// 특정영역2에서 좌표1번, 좌표2번 텍스트 탐색하여 좌표 저장 private void button24_Click(object sender, EventArgs e) { ///////////// ini 객체 생성 시작 ///////////////////////////////////////////////////// //현재 프로그램이 실행되고 있는정보 가져오기: 디버깅 모드라면 bin/debug/프로그램명.exe FileInfo exefileinfo = new FileInfo(@"C:\Program Files\PLOCR\PLOCR.exe"); string pathini = exefileinfo.Directory.FullName.ToString(); //프로그램 실행되고 있는데 path 가져오기 string fileName = @"\PLOCRconfig.ini"; // 환경설정 파일명 string filePath = pathini + fileName; //ini 파일 경로 DocumentAnalysis.IniUtil ini = new DocumentAnalysis.IniUtil(filePath); // 만들어 놓았던 iniUtil 객체 생성(생성자 인자로 파일경로 정보 넘겨줌) //////////// ini 객체 생성 끝 ///////////////////////////////////////////////////////// int x = int.Parse(ini.GetIniValue("특정좌표영역2", "X")); int y = int.Parse(ini.GetIniValue("특정좌표영역2", "Y")); int width = int.Parse(ini.GetIniValue("특정좌표영역2", "가로")); int height = int.Parse(ini.GetIniValue("특정좌표영역2", "세로")); //Bitmap source = (Bitmap)pictureBox1.Image; //string path = @"C:\Program Files\PLOCR\prescription.png"; //Bitmap source = (Bitmap)Bitmap.FromFile(path); Bitmap source = Global.source; string htext = OcrEngine.hocr(source, x, y, width, height); if (radioButton1.Checked == true) { int standardX, standardY, standardWidth, standardHeight; standardXY.startXY(htext, ini.GetIniValue("좌표텍스트", "좌표1번"), out standardX, out standardY, out standardWidth, out standardHeight); ini.SetIniValue("스캔으로 찾은 좌표1번", "X", standardX.ToString()); ini.SetIniValue("스캔으로 찾은 좌표1번", "Y", standardY.ToString()); ini.SetIniValue("스캔으로 찾은 좌표1번", "가로", standardWidth.ToString()); ini.SetIniValue("스캔으로 찾은 좌표1번", "세로", standardHeight.ToString()); } else if (radioButton2.Checked == true) { int standardX, standardY, standardWidth, standardHeight; standardXY.startXY(htext, ini.GetIniValue("좌표텍스트", "좌표2번"), out standardX, out standardY, out standardWidth, out standardHeight); ini.SetIniValue("스캔으로 찾은 좌표2번", "X", standardX.ToString()); ini.SetIniValue("스캔으로 찾은 좌표2번", "Y", standardY.ToString()); ini.SetIniValue("스캔으로 찾은 좌표2번", "가로", standardWidth.ToString()); ini.SetIniValue("스캔으로 찾은 좌표2번", "세로", standardHeight.ToString()); } else { MessageBox.Show("\"좌표1번 찾기\" 또는 \"좌표2번 찾기\"를 체크해주세요."); } }
private void Form1_Load(object sender, EventArgs e) { ///////////// ini 객체 생성 시작 ///////////////////////////////////////////////////// //현재 프로그램이 실행되고 있는정보 가져오기: 디버깅 모드라면 bin/debug/프로그램명.exe FileInfo exefileinfo = new FileInfo(@"C:\Program Files\PLOCR\PLOCR.exe"); string pathini = exefileinfo.Directory.FullName.ToString(); //프로그램 실행되고 있는데 path 가져오기 string fileName = @"\PLOCRconfig.ini"; // 환경설정 파일명 string filePath = pathini + fileName; //ini 파일 경로 DocumentAnalysis.IniUtil ini = new DocumentAnalysis.IniUtil(filePath); // 만들어 놓았던 iniUtil 객체 생성(생성자 인자로 파일경로 정보 넘겨줌) //////////// ini 객체 생성 끝 ///////////////////////////////////////////////////////// textBox1.Text = String.Format("{0}:{1}:{2}:{3}", ini.GetIniValue("좌표1번", "X"), ini.GetIniValue("좌표1번", "Y"), ini.GetIniValue("좌표1번", "가로"), ini.GetIniValue("좌표1번", "세로")); textBox2.Text = String.Format("{0}:{1}:{2}:{3}", ini.GetIniValue("좌표2번", "X"), ini.GetIniValue("좌표2번", "Y"), ini.GetIniValue("좌표2번", "가로"), ini.GetIniValue("좌표번", "세로")); textBox3.Text = String.Format("{0}:{1}:{2}:{3}", ini.GetIniValue("환자이름", "X"), ini.GetIniValue("환자이름", "Y"), ini.GetIniValue("환자이름", "가로"), ini.GetIniValue("환자이름", "세로")); textBox4.Text = String.Format("{0}:{1}:{2}:{3}", ini.GetIniValue("주민번호", "X"), ini.GetIniValue("주민번호", "Y"), ini.GetIniValue("주민번호", "가로"), ini.GetIniValue("주민번호", "세로")); textBox5.Text = String.Format("{0}:{1}:{2}:{3}", ini.GetIniValue("교부번호", "X"), ini.GetIniValue("교부번호", "Y"), ini.GetIniValue("교부번호", "가로"), ini.GetIniValue("교부번호", "세로")); textBox6.Text = String.Format("{0}:{1}:{2}:{3}", ini.GetIniValue("의사면허", "X"), ini.GetIniValue("의사면허", "Y"), ini.GetIniValue("의사면허", "가로"), ini.GetIniValue("의사면허", "세로")); textBox7.Text = String.Format("{0}:{1}:{2}:{3}", ini.GetIniValue("발행기관", "X"), ini.GetIniValue("발행기관", "Y"), ini.GetIniValue("발행기관", "가로"), ini.GetIniValue("발행기관", "세로")); textBox8.Text = String.Format("{0}:{1}:{2}:{3}", ini.GetIniValue("질병기호", "X"), ini.GetIniValue("질병기호", "Y"), ini.GetIniValue("질병기호", "가로"), ini.GetIniValue("질병기호", "세로")); textBox14.Text = ini.GetIniValue("좌표텍스트", "좌표1번"); textBox15.Text = ini.GetIniValue("좌표텍스트", "좌표2번"); textBox16.Text = ini.GetIniValue("색상필터값", "RedMin"); textBox17.Text = ini.GetIniValue("색상필터값", "GreenMin"); textBox18.Text = ini.GetIniValue("색상필터값", "BlueMin"); textBox19.Text = ini.GetIniValue("색상필터값", "RedMax"); textBox20.Text = ini.GetIniValue("색상필터값", "GreenMax"); textBox21.Text = ini.GetIniValue("색상필터값", "BlueMax"); trackBar1.Value = int.Parse(ini.GetIniValue("색상필터값", "RedMin")); trackBar2.Value = int.Parse(ini.GetIniValue("색상필터값", "RedMax")); trackBar3.Value = int.Parse(ini.GetIniValue("색상필터값", "GreenMin")); trackBar4.Value = int.Parse(ini.GetIniValue("색상필터값", "GreenMax")); trackBar5.Value = int.Parse(ini.GetIniValue("색상필터값", "BlueMin")); trackBar6.Value = int.Parse(ini.GetIniValue("색상필터값", "BlueMax")); trackBar1.Invalidate(); trackBar2.Invalidate(); trackBar3.Invalidate(); trackBar4.Invalidate(); trackBar5.Invalidate(); trackBar6.Invalidate(); textBox23.Text = ini.GetIniValue("밝기값", "밝게횟수"); textBox22.Text = ini.GetIniValue("밝기값", "밝게횟수"); textBox24.Text = ini.GetIniValue("선굵기값", "굵게횟수"); textBox25.Text = ini.GetIniValue("선굵기값", "가늘게횟수"); comboBox6.Text = ini.GetIniValue("지정한 사분면", "좌표1번사분면"); comboBox7.Text = ini.GetIniValue("지정한 사분면", "좌표2번사분면"); comboBox8.Text = ini.GetIniValue("실행 순서", "1단계"); comboBox9.Text = ini.GetIniValue("실행 순서", "2단계"); comboBox10.Text = ini.GetIniValue("실행 순서", "3단계"); comboBox11.Text = ini.GetIniValue("실행 순서", "4단계"); comboBox12.Text = ini.GetIniValue("실행 순서", "5단계"); comboBox13.Text = ini.GetIniValue("실행 순서", "6단계"); comboBox14.Text = ini.GetIniValue("실행 순서", "7단계"); Global.source = null; Global.sourcebefore = null; Global.sourceoriginal = null; //string path = @"C:\Program Files\PLOCR\prescription.png"; //Global.source = (Bitmap)Bitmap.FromFile(path); //Global.sourceoriginal = (Bitmap)Bitmap.FromFile(path); }
// 실행순서 검증 private void button54_Click(object sender, EventArgs e) { string path = @"C:\Program Files\PLOCR\prescription.png"; Bitmap source = (Bitmap)Bitmap.FromFile(path); ///////////// ini 객체 생성 시작 ///////////////////////////////////////////////////// //현재 프로그램이 실행되고 있는정보 가져오기: 디버깅 모드라면 bin/debug/프로그램명.exe FileInfo exefileinfo = new FileInfo(@"C:\Program Files\PLOCR\PLOCR.exe"); string pathini = exefileinfo.Directory.FullName.ToString(); //프로그램 실행되고 있는데 path 가져오기 string fileName = @"\PLOCRconfig.ini"; // 환경설정 파일명 string filePath = pathini + fileName; //ini 파일 경로 DocumentAnalysis.IniUtil ini = new DocumentAnalysis.IniUtil(filePath); // 만들어 놓았던 iniUtil 객체 생성(생성자 인자로 파일경로 정보 넘겨줌) //////////// ini 객체 생성 끝 ///////////////////////////////////////////////////////// string exeNo1 = ini.GetIniValue("실행 순서", "1단계"); string exeNo2 = ini.GetIniValue("실행 순서", "2단계"); string exeNo3 = ini.GetIniValue("실행 순서", "3단계"); string exeNo4 = ini.GetIniValue("실행 순서", "4단계"); string exeNo5 = ini.GetIniValue("실행 순서", "5단계"); string exeNo6 = ini.GetIniValue("실행 순서", "6단계"); string exeNo7 = ini.GetIniValue("실행 순서", "7단계"); if (exeNo7 == "끝") { source = calculator.imgProcess(source, exeNo1); pictureBox1.Image = source; pictureBox1.Refresh(); System.Threading.Thread.Sleep(3000); source = calculator.imgProcess(source, exeNo2); pictureBox1.Image = source; pictureBox1.Refresh(); System.Threading.Thread.Sleep(3000); source = calculator.imgProcess(source, exeNo3); pictureBox1.Image = source; pictureBox1.Refresh(); System.Threading.Thread.Sleep(3000); source = calculator.imgProcess(source, exeNo4); pictureBox1.Image = source; pictureBox1.Refresh(); System.Threading.Thread.Sleep(3000); source = calculator.imgProcess(source, exeNo5); pictureBox1.Image = source; pictureBox1.Refresh(); System.Threading.Thread.Sleep(3000); source = calculator.imgProcess(source, exeNo6); pictureBox1.Image = source; pictureBox1.Refresh(); System.Threading.Thread.Sleep(3000); } else if (exeNo6 == "끝") { source = calculator.imgProcess(source, exeNo1); pictureBox1.Image = source; pictureBox1.Refresh(); System.Threading.Thread.Sleep(3000); source = calculator.imgProcess(source, exeNo2); pictureBox1.Image = source; pictureBox1.Refresh(); System.Threading.Thread.Sleep(3000); source = calculator.imgProcess(source, exeNo3); pictureBox1.Image = source; pictureBox1.Refresh(); System.Threading.Thread.Sleep(3000); source = calculator.imgProcess(source, exeNo4); pictureBox1.Image = source; pictureBox1.Refresh(); System.Threading.Thread.Sleep(3000); source = calculator.imgProcess(source, exeNo5); pictureBox1.Image = source; pictureBox1.Refresh(); System.Threading.Thread.Sleep(3000); } else if (exeNo5 == "끝") { source = calculator.imgProcess(source, exeNo1); pictureBox1.Image = source; pictureBox1.Refresh(); System.Threading.Thread.Sleep(1000); source = calculator.imgProcess(source, exeNo2); pictureBox1.Image = source; pictureBox1.Refresh(); System.Threading.Thread.Sleep(1000); source = calculator.imgProcess(source, exeNo3); pictureBox1.Image = source; pictureBox1.Refresh(); System.Threading.Thread.Sleep(1000); source = calculator.imgProcess(source, exeNo4); pictureBox1.Image = source; pictureBox1.Refresh(); System.Threading.Thread.Sleep(1000); } else if (exeNo4 == "끝") { source = calculator.imgProcess(source, exeNo1); pictureBox1.Image = source; pictureBox1.Refresh(); System.Threading.Thread.Sleep(3000); source = calculator.imgProcess(source, exeNo2); pictureBox1.Image = source; pictureBox1.Refresh(); System.Threading.Thread.Sleep(3000); source = calculator.imgProcess(source, exeNo3); pictureBox1.Image = source; pictureBox1.Refresh(); System.Threading.Thread.Sleep(3000); } else if (exeNo3 == "끝") { source = calculator.imgProcess(source, exeNo1); pictureBox1.Image = source; pictureBox1.Refresh(); System.Threading.Thread.Sleep(3000); source = calculator.imgProcess(source, exeNo2); pictureBox1.Image = source; pictureBox1.Refresh(); System.Threading.Thread.Sleep(3000); } else if (exeNo2 == "끝") { source = calculator.imgProcess(source, exeNo1); pictureBox1.Image = source; pictureBox1.Refresh(); System.Threading.Thread.Sleep(3000); } else if (exeNo1 == "끝") { } calculator.originalcheck(source); Global.source = source; pictureBox1.Image = source; pictureBox1.Refresh(); Global.source.Save(@"C:\Program Files\PLOCR\processedprescription.png"); }
public static void calibration(int quad) { ///////////// ini 객체 생성 시작 ///////////////////////////////////////////////////// //현재 프로그램이 실행되고 있는정보 가져오기: 디버깅 모드라면 bin/debug/프로그램명.exe FileInfo exefileinfo = new FileInfo(@"C:\Program Files\PLOCR\PLOCR.exe"); string pathini = exefileinfo.Directory.FullName.ToString(); //프로그램 실행되고 있는데 path 가져오기 string fileName = @"\PLOCRconfig.ini"; // 환경설정 파일명 string filePath = pathini + fileName; //ini 파일 경로 DocumentAnalysis.IniUtil ini = new DocumentAnalysis.IniUtil(filePath); // 만들어 놓았던 iniUtil 객체 생성(생성자 인자로 파일경로 정보 넘겨줌) //////////// ini 객체 생성 끝 ///////////////////////////////////////////////////////// int order; int sX1 = 0, sX2 = 0, sY1 = 0, sY2 = 0; int specialX = int.Parse(ini.GetIniValue("특정좌표영역", "X")); int specialY = int.Parse(ini.GetIniValue("특정좌표영역", "Y")); order = quad - 1; string path = @"C:\Program Files\PLOCR\prescription.png"; Bitmap source = (Bitmap)Bitmap.FromFile(path); switch (order) { case 0: //1사분면일 경우 sX1 = (source.Width) / 2 + int.Parse(ini.GetIniValue("좌표1번", "X")); sY1 = int.Parse(ini.GetIniValue("좌표1번", "Y")); sX2 = (source.Width) / 2 + int.Parse(ini.GetIniValue("좌표2번", "X")); sY2 = int.Parse(ini.GetIniValue("좌표1번", "Y")); break; case 1: //2사분면일 경우 sX1 = int.Parse(ini.GetIniValue("좌표1번", "X")); sY1 = int.Parse(ini.GetIniValue("좌표1번", "Y")); sX2 = int.Parse(ini.GetIniValue("좌표2번", "X")); sY2 = int.Parse(ini.GetIniValue("좌표2번", "Y")); break; case 2: //3사분면일 경우 sX1 = int.Parse(ini.GetIniValue("좌표1번", "X")); sY1 = (source.Height) / 2 + int.Parse(ini.GetIniValue("좌표1번", "Y")); sX2 = int.Parse(ini.GetIniValue("좌표1번", "X")); sY2 = (source.Height) / 2 + int.Parse(ini.GetIniValue("좌표2번", "Y")); break; case 3: //4사분면일 경우 sX1 = (source.Width) / 2 + int.Parse(ini.GetIniValue("좌표1번", "X")); sY1 = (source.Height) / 2 + int.Parse(ini.GetIniValue("좌표1번", "Y")); sX2 = (source.Width) / 2 + int.Parse(ini.GetIniValue("좌표2번", "X")); sY2 = (source.Height) / 2 + int.Parse(ini.GetIniValue("좌표2번", "Y")); break; case 4: //특정영역일 경우 sX1 = specialX + int.Parse(ini.GetIniValue("좌표1번", "X")); sY1 = specialY + int.Parse(ini.GetIniValue("좌표1번", "Y")); sX2 = specialX + int.Parse(ini.GetIniValue("좌표2번", "X")); sY2 = specialY + int.Parse(ini.GetIniValue("좌표2번", "Y")); break; } }
// 이미지 처리 몇단계까지 해야하나 확인하고 처리 public static Bitmap sequence(Bitmap source) { ///////////// ini 객체 생성 시작 ///////////////////////////////////////////////////// //현재 프로그램이 실행되고 있는정보 가져오기: 디버깅 모드라면 bin/debug/프로그램명.exe FileInfo exefileinfo = new FileInfo(@"C:\Program Files\PLOCR\PLOCR.exe"); string pathini = exefileinfo.Directory.FullName.ToString(); //프로그램 실행되고 있는데 path 가져오기 string fileName = @"\PLOCRconfig.ini"; // 환경설정 파일명 string filePath = pathini + fileName; //ini 파일 경로 DocumentAnalysis.IniUtil ini = new DocumentAnalysis.IniUtil(filePath); // 만들어 놓았던 iniUtil 객체 생성(생성자 인자로 파일경로 정보 넘겨줌) //////////// ini 객체 생성 끝 ///////////////////////////////////////////////////////// string exeNo1 = ini.GetIniValue("실행 순서", "1단계"); string exeNo2 = ini.GetIniValue("실행 순서", "2단계"); string exeNo3 = ini.GetIniValue("실행 순서", "3단계"); string exeNo4 = ini.GetIniValue("실행 순서", "4단계"); string exeNo5 = ini.GetIniValue("실행 순서", "5단계"); string exeNo6 = ini.GetIniValue("실행 순서", "6단계"); string exeNo7 = ini.GetIniValue("실행 순서", "7단계"); if (exeNo7 == "끝") { source = imgProcess(source, exeNo1); source = imgProcess(source, exeNo2); source = imgProcess(source, exeNo3); source = imgProcess(source, exeNo4); source = imgProcess(source, exeNo5); source = imgProcess(source, exeNo6); } else if (exeNo6 == "끝") { source = imgProcess(source, exeNo1); source = imgProcess(source, exeNo2); source = imgProcess(source, exeNo3); source = imgProcess(source, exeNo4); source = imgProcess(source, exeNo5); } else if (exeNo5 == "끝") { source = imgProcess(source, exeNo1); source = imgProcess(source, exeNo2); source = imgProcess(source, exeNo3); source = imgProcess(source, exeNo4); } else if (exeNo4 == "끝") { source = imgProcess(source, exeNo1); source = imgProcess(source, exeNo2); source = imgProcess(source, exeNo3); } else if (exeNo3 == "끝") { source = imgProcess(source, exeNo1); source = imgProcess(source, exeNo2); } else if (exeNo2 == "끝") { source = imgProcess(source, exeNo1); } else if (exeNo1 == "끝") { } return source; }
// old 는 기준처방전 new 는 실제처방전, 1 과 2는 기준좌표 두점을 말하고, 모르는 제3의 new 를 찾는 함수 public static int NewPointX(int x3old, int x1new, int x2new) { ///////////// ini 객체 생성 시작 ///////////////////////////////////////////////////// //현재 프로그램이 실행되고 있는정보 가져오기: 디버깅 모드라면 bin/debug/프로그램명.exe FileInfo exefileinfo = new FileInfo(@"C:\Program Files\PLOCR\PLOCR.exe"); string pathini = exefileinfo.Directory.FullName.ToString(); //프로그램 실행되고 있는데 path 가져오기 string fileName = @"\PLOCRconfig.ini"; // 환경설정 파일명 string filePath = pathini + fileName; //ini 파일 경로 DocumentAnalysis.IniUtil ini = new DocumentAnalysis.IniUtil(filePath); // 만들어 놓았던 iniUtil 객체 생성(생성자 인자로 파일경로 정보 넘겨줌) //////////// ini 객체 생성 끝 ///////////////////////////////////////////////////////// int x1old = int.Parse(ini.GetIniValue("스캔으로 찾은 좌표1번", "X")); int x2old = int.Parse(ini.GetIniValue("스캔으로 찾은 좌표2번", "X")); double x3new = 0; if ((x3old - x1old) < 0) { x3new = x1new - (Math.Abs((x3old - x1old)) * Math.Abs((x2new - x1new)) / Math.Abs((x2old - x1old))); // x1old 는 기준처방의 1번좌표, x2old 는 기준처방의 2번좌표, x3old 는 사용자가 지정한 기준처방의 좌표 } // x1new 는 실제처방의 1번좌표, x2new 는 실제처방의 2번좌표, x3new 는 찾으려고 하는 좌표 else if ((x3old - x1old) > 0) { x3new = Math.Abs((x3old - x1old)) * Math.Abs((x2new - x1new)) / Math.Abs((x2old - x1old)) + x1new; } return (int)x3new; // 실제처방전의 원하는 좌표 x 값 }
public static Bitmap sequence(Bitmap source) // 이미지 처리 몇단계까지 해야하나 확인하고 처리 { ///////////// ini 객체 생성 시작 ///////////////////////////////////////////////////// //현재 프로그램이 실행되고 있는정보 가져오기: 디버깅 모드라면 bin/debug/프로그램명.exe FileInfo exefileinfo = new FileInfo(@"C:\Program Files\PLOCR\PLOCR.exe"); string pathini = exefileinfo.Directory.FullName.ToString(); //프로그램 실행되고 있는데 path 가져오기 string fileName = @"\PLOCRconfig.ini"; // 환경설정 파일명 string filePath = pathini + fileName; //ini 파일 경로 DocumentAnalysis.IniUtil ini = new DocumentAnalysis.IniUtil(filePath); // 만들어 놓았던 iniUtil 객체 생성(생성자 인자로 파일경로 정보 넘겨줌) //////////// ini 객체 생성 끝 ///////////////////////////////////////////////////////// string exeNo1 = ini.GetIniValue("실행 순서", "1단계"); string exeNo2 = ini.GetIniValue("실행 순서", "2단계"); string exeNo3 = ini.GetIniValue("실행 순서", "3단계"); string exeNo4 = ini.GetIniValue("실행 순서", "4단계"); string exeNo5 = ini.GetIniValue("실행 순서", "5단계"); string exeNo6 = ini.GetIniValue("실행 순서", "6단계"); string exeNo7 = ini.GetIniValue("실행 순서", "7단계"); if (exeNo7 == "끝") { source = imgProcess(source, exeNo1); source = imgProcess(source, exeNo2); source = imgProcess(source, exeNo3); source = imgProcess(source, exeNo4); source = imgProcess(source, exeNo5); source = imgProcess(source, exeNo6); } else if (exeNo6 == "끝") { source = imgProcess(source, exeNo1); source = imgProcess(source, exeNo2); source = imgProcess(source, exeNo3); source = imgProcess(source, exeNo4); source = imgProcess(source, exeNo5); } else if (exeNo5 == "끝") { source = imgProcess(source, exeNo1); source = imgProcess(source, exeNo2); source = imgProcess(source, exeNo3); source = imgProcess(source, exeNo4); } else if (exeNo4 == "끝") { source = imgProcess(source, exeNo1); source = imgProcess(source, exeNo2); source = imgProcess(source, exeNo3); } else if (exeNo3 == "끝") { source = imgProcess(source, exeNo1); source = imgProcess(source, exeNo2); } else if (exeNo2 == "끝") { source = imgProcess(source, exeNo1); } else if (exeNo1 == "끝") { } return(source); }