Пример #1
0
        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);
        }
Пример #2
0
        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);
        }
Пример #3
0
        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);
        }
Пример #4
0
        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);
        }
Пример #5
0
        // 어둡게
        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;
        }
Пример #6
0
        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);
        }
Пример #7
0
        // 이미지 처리 몇단계까지 해야하나 확인하고 처리
        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;
        }
Пример #8
0
        // 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;
        }
Пример #9
0
        private void button4_Click(object sender, EventArgs e)
        {
            textBox4.Text = "";
            textBox4.Text += String.Format("{0}:{1}:{2}:{3}", startX.ToString(), startY.ToString(), width.ToString(), height.ToString());

            ///////////// 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 객체 생성 끝 /////////////////////////////////////////////////////////

            ini.SetIniValue("주민번호", "X", startX.ToString());
            ini.SetIniValue("주민번호", "Y", startY.ToString());
            ini.SetIniValue("주민번호", "가로", width.ToString());
            ini.SetIniValue("주민번호", "세로", height.ToString());
        }
Пример #10
0
        // private void pictureBox1_Paint(object sender, PaintEventArgs e)  // 처방 이미지 위에, 설정한 좌표 사각형을 모두 표시한다.
        // {
        //     Bitmap myBitmap = new Bitmap(@"C:\Program Files\PLOCR\prescription.png");
        //     Graphics gs = Graphics.FromImage(myBitmap);
        ////     Rectangle rect = new Rectangle(0, 0, 50, 100);
        //     Rectangle[] multirect = { new Rectangle(0, 0, 100, 200), new Rectangle(350, 90, 400, 200) };
        //     Pen p = new Pen(new SolidBrush(Color.Red));
        //     Pen p1 = new Pen(new SolidBrush(Color.Orange));
        // //    gs.DrawRectangle(p1, rect);
        //     gs.DrawRectangles(p, multirect); //draw more two rectangles
        //     //myBitmap.Dispose();
        //     //gs.Dispose();
        // }
        private void comboBox5_SelectedIndexChanged(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 객체 생성 끝 /////////////////////////////////////////////////////////

            switch (comboBox5.SelectedIndex)
            {
                case 0:
                    textBox9.Text = "";
                    textBox9.Text += String.Format("{0}:{1}:{2}:{3}", startX.ToString(), startY.ToString(), width.ToString(), height.ToString());

                    ini.SetIniValue("1번 약품코드", "X", startX.ToString());
                    ini.SetIniValue("1번 약품코드", "Y", startY.ToString());
                    ini.SetIniValue("1번 약품코드", "가로", width.ToString());
                    ini.SetIniValue("1번 약품코드", "세로", height.ToString());

                    break;
                case 1:
                    textBox9.Text = "";
                    textBox9.Text += String.Format("{0}:{1}:{2}:{3}", startX.ToString(), startY.ToString(), width.ToString(), height.ToString());

                    ini.SetIniValue("2번 약품코드", "X", startX.ToString());
                    ini.SetIniValue("2번 약품코드", "Y", startY.ToString());
                    ini.SetIniValue("2번 약품코드", "가로", width.ToString());
                    ini.SetIniValue("2번 약품코드", "세로", height.ToString());

                    break;
                case 2:
                    textBox9.Text = "";
                    textBox9.Text += String.Format("{0}:{1}:{2}:{3}", startX.ToString(), startY.ToString(), width.ToString(), height.ToString());

                    ini.SetIniValue("3번 약품코드", "X", startX.ToString());
                    ini.SetIniValue("3번 약품코드", "Y", startY.ToString());
                    ini.SetIniValue("3번 약품코드", "가로", width.ToString());
                    ini.SetIniValue("3번 약품코드", "세로", height.ToString());

                    break;
                case 3:
                    textBox9.Text = "";
                    textBox9.Text += String.Format("{0}:{1}:{2}:{3}", startX.ToString(), startY.ToString(), width.ToString(), height.ToString());

                    ini.SetIniValue("4번 약품코드", "X", startX.ToString());
                    ini.SetIniValue("4번 약품코드", "Y", startY.ToString());
                    ini.SetIniValue("4번 약품코드", "가로", width.ToString());
                    ini.SetIniValue("4번 약품코드", "세로", height.ToString());

                    break;
                case 4:
                    textBox9.Text = "";
                    textBox9.Text += String.Format("{0}:{1}:{2}:{3}", startX.ToString(), startY.ToString(), width.ToString(), height.ToString());

                    ini.SetIniValue("5번 약품코드", "X", startX.ToString());
                    ini.SetIniValue("5번 약품코드", "Y", startY.ToString());
                    ini.SetIniValue("5번 약품코드", "가로", width.ToString());
                    ini.SetIniValue("5번 약품코드", "세로", height.ToString());

                    break;
                case 5:
                    textBox9.Text = "";
                    textBox9.Text += String.Format("{0}:{1}:{2}:{3}", startX.ToString(), startY.ToString(), width.ToString(), height.ToString());

                    ini.SetIniValue("6번 약품코드", "X", startX.ToString());
                    ini.SetIniValue("6번 약품코드", "Y", startY.ToString());
                    ini.SetIniValue("6번 약품코드", "가로", width.ToString());
                    ini.SetIniValue("6번 약품코드", "세로", height.ToString());

                    break;
                case 6:
                    textBox9.Text = "";
                    textBox9.Text += String.Format("{0}:{1}:{2}:{3}", startX.ToString(), startY.ToString(), width.ToString(), height.ToString());

                    ini.SetIniValue("7번 약품코드", "X", startX.ToString());
                    ini.SetIniValue("7번 약품코드", "Y", startY.ToString());
                    ini.SetIniValue("7번 약품코드", "가로", width.ToString());
                    ini.SetIniValue("7번 약품코드", "세로", height.ToString());

                    break;
                case 7:
                    textBox9.Text = "";
                    textBox9.Text += String.Format("{0}:{1}:{2}:{3}", startX.ToString(), startY.ToString(), width.ToString(), height.ToString());

                    ini.SetIniValue("8번 약품코드", "X", startX.ToString());
                    ini.SetIniValue("8번 약품코드", "Y", startY.ToString());
                    ini.SetIniValue("8번 약품코드", "가로", width.ToString());
                    ini.SetIniValue("8번 약품코드", "세로", height.ToString());

                    break;
                case 8:
                    textBox9.Text = "";
                    textBox9.Text += String.Format("{0}:{1}:{2}:{3}", startX.ToString(), startY.ToString(), width.ToString(), height.ToString());

                    ini.SetIniValue("9번 약품코드", "X", startX.ToString());
                    ini.SetIniValue("9번 약품코드", "Y", startY.ToString());
                    ini.SetIniValue("9번 약품코드", "가로", width.ToString());
                    ini.SetIniValue("9번 약품코드", "세로", height.ToString());

                    break;
                case 9:
                    textBox9.Text = "";
                    textBox9.Text += String.Format("{0}:{1}:{2}:{3}", startX.ToString(), startY.ToString(), width.ToString(), height.ToString());

                    ini.SetIniValue("10번 약품코드", "X", startX.ToString());
                    ini.SetIniValue("10번 약품코드", "Y", startY.ToString());
                    ini.SetIniValue("10번 약품코드", "가로", width.ToString());
                    ini.SetIniValue("10번 약품코드", "세로", height.ToString());

                    break;
                case 10:
                    textBox9.Text = "";
                    textBox9.Text += String.Format("{0}:{1}:{2}:{3}", startX.ToString(), startY.ToString(), width.ToString(), height.ToString());

                    ini.SetIniValue("11번 약품코드", "X", startX.ToString());
                    ini.SetIniValue("11번 약품코드", "Y", startY.ToString());
                    ini.SetIniValue("11번 약품코드", "가로", width.ToString());
                    ini.SetIniValue("11번 약품코드", "세로", height.ToString());

                    break;
                case 11:
                    textBox9.Text = "";
                    textBox9.Text += String.Format("{0}:{1}:{2}:{3}", startX.ToString(), startY.ToString(), width.ToString(), height.ToString());

                    ini.SetIniValue("12번 약품코드", "X", startX.ToString());
                    ini.SetIniValue("12번 약품코드", "Y", startY.ToString());
                    ini.SetIniValue("12번 약품코드", "가로", width.ToString());
                    ini.SetIniValue("12번 약품코드", "세로", height.ToString());

                    break;
                case 12:
                    textBox9.Text = "";
                    textBox9.Text += String.Format("{0}:{1}:{2}:{3}", startX.ToString(), startY.ToString(), width.ToString(), height.ToString());

                    ini.SetIniValue("13번 약품코드", "X", startX.ToString());
                    ini.SetIniValue("13번 약품코드", "Y", startY.ToString());
                    ini.SetIniValue("13번 약품코드", "가로", width.ToString());
                    ini.SetIniValue("13번 약품코드", "세로", height.ToString());

                    break;
            }
        }
Пример #11
0
        private void checkBox1_CheckedChanged(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 객체 생성 끝 /////////////////////////////////////////////////////////

            if (checkBox1.Checked)
            {
                ini.SetIniValue("약품영역사용", "사용여부", "1");
            }
            else
            {
                ini.SetIniValue("약품영역지정", "사용여부", "0");
            }
        }
Пример #12
0
        private void button9_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 객체 생성 끝 /////////////////////////////////////////////////////////

            //pictureBox1.Paint += new PaintEventHandler(pictureBox1_Paint);

            //pictureBox1.Invalidate();  // picturebox paint 이벤트 불러오기
            //pictureBox1.Dispose();

            MessageBox.Show("좌표 저장되었습니다.");
        }
Пример #13
0
        // opening
        private void button56_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 객체 생성 끝 /////////////////////////////////////////////////////////

            Bitmap source = Global.source;
            Bitmap tmp = source;
            // convert to 24 bits per pixel
            source = imageProcess.Clone(tmp, PixelFormat.Format24bppRgb);
            // delete old image
            tmp.Dispose();

            // create filter
            Opening filter = new Opening();
            // apply the filter
            filter.Apply(source);

            Global.source = source;
            pictureBox1.Image = Global.source;
            pictureBox1.Refresh();

            textBox27.Text = (int.Parse(textBox24.Text) + 1).ToString();
            ini.SetIniValue("opening", "opening횟수", textBox27.Text.ToString());
        }
Пример #14
0
        // 실행순서 검증
        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");
        }
Пример #15
0
        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;
            }
        }
Пример #16
0
        private void button35_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 객체 생성 끝 /////////////////////////////////////////////////////////

            ini.SetIniValue("선굵기값", "굵게횟수", textBox24.Text.ToString());
            ini.SetIniValue("선굵기값", "가늘게횟수", textBox25.Text.ToString());
            MessageBox.Show("선 굵기 값 저장되었습니다.");
        }
Пример #17
0
        // 선 가늘게
        private void button36_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 객체 생성 끝 /////////////////////////////////////////////////////////

            Bitmap source = Global.source;
            Bitmap tmp = source;
            // convert to 24 bits per pixel
            source = imageProcess.Clone(tmp, PixelFormat.Format24bppRgb);
            // delete old image
            tmp.Dispose();

            Dilatation filter = new Dilatation();
            filter.ApplyInPlace(source);

            Global.source = source;
            pictureBox1.Image = Global.source;
            pictureBox1.Invalidate();

            textBox25.Text = (int.Parse(textBox25.Text) + 1).ToString();
            ini.SetIniValue("선굵기값", "가늘게횟수", textBox25.Text.ToString());

            //string path = calculator.CreateFileCheck("C:\\Program Files\\PLOCR\\prescription.png");
            //pictureBox1.Image.Save(path);
        }
Пример #18
0
        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);
        }
Пример #19
0
        // 기울기 보정
        private void button51_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 객체 생성 끝 /////////////////////////////////////////////////////////

            Bitmap source = Global.source;

            // create grayscale filter (BT709)
            Grayscale filter = new Grayscale(0.2125, 0.7154, 0.0721);       // 8비트 grayscale 로 바꾸고
            // apply the filter
            Bitmap grayImage = filter.Apply(source);

            grayImage.Save(@"C:\\Program Files\\PLOCR\\그레이스케일.png");

            // create instance of skew checker
            DocumentSkewChecker skewChecker = new DocumentSkewChecker();        // 8비트 grayscale 로 넣어줘야 함
            //    // get documents skew angle
            double angle = skewChecker.GetSkewAngle(grayImage);  // 기울어진 각도를 얻고

            Bitmap tmp = source;
            // convert to 24 bits per pixel
            source = imageProcess.Clone(tmp, PixelFormat.Format24bppRgb);       // 로테이션 전에 24비트로 바꿔주고
            // delete old image
            tmp.Dispose();

            // create rotation filter
            RotateBilinear rotationFilter = new RotateBilinear(-angle);
            rotationFilter.FillColor = Color.White;
            // rotate image applying the filter
            Bitmap rotatedImage = rotationFilter.Apply(source);  // 원래 이미지를 가져다가 각도만큼 돌리고(원래 이미지는 24비트로 넣어줘야함)

            Global.source = rotatedImage;
            pictureBox1.Image = Global.source;
            pictureBox1.Invalidate();

            ini.SetIniValue("기울어짐 바로잡기", "바로잡기 예/아니오", "예");
        }
Пример #20
0
        private void textBox15_TextChanged(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 객체 생성 끝 /////////////////////////////////////////////////////////

            ini.SetIniValue("좌표텍스트", "좌표2번", textBox15.Text);
        }
Пример #21
0
        // 특정영역2를 읽고 좌표를 저장하고, 변환된 텍스트를 보여준다.
        private void button23_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 객체 생성 끝 /////////////////////////////////////////////////////////

            ini.SetIniValue("특정좌표영역2", "X", startX.ToString());
            ini.SetIniValue("특정좌표영역2", "Y", startY.ToString());
            ini.SetIniValue("특정좌표영역2", "가로", width.ToString());
            ini.SetIniValue("특정좌표영역2", "세로", height.ToString());

            //Bitmap source = (Bitmap)pictureBox1.Image;
            //string path = @"C:\Program Files\PLOCR\prescription.png";
            //Bitmap source = (Bitmap)Bitmap.FromFile(path);

            Bitmap source = Global.source;
            OcrEngine.hocr(source, startX, startY, width, height);

            try
            {
                System.Diagnostics.Process.Start(@"C:\Program Files\PLOCR\textrecognition.html");
            }
            catch { }
        }
Пример #22
0
        // 특정영역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번 찾기\"를 체크해주세요.");
            }
        }
Пример #23
0
        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;
            }
        }
Пример #24
0
        // 색상 반전을 통한 배경값을 저장한다.
        private void button29_Click_1(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 객체 생성 끝 /////////////////////////////////////////////////////////

            if (radioButton3.Checked == true)
            {
                ini.SetIniValue("색상 반전값", "배경", "흰배경");
                MessageBox.Show("흰배경으로 저장되었습니다.");
            }
            else if (radioButton4.Checked == true)
            {
                ini.SetIniValue("색상 반전값", "배경", "검은배경");
                MessageBox.Show("검은배경으로 저장되었습니다.");
            }
            else
            {
                MessageBox.Show("색상 반전 배경색을 체크해주세요.");
            }
        }
Пример #25
0
        // 선 가늘게
        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;
        }
Пример #26
0
        // 실행 순서 저장
        private void button30_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 객체 생성 끝 /////////////////////////////////////////////////////////

            string path = @"C:\Program Files\PLOCR\prescription.png";
            Bitmap source = (Bitmap)Bitmap.FromFile(path);

            source = calculator.sequence(source);
            source = calculator.originalcheck(source);

            Global.source.Save(@"C:\Program Files\PLOCR\processedprescription.png");

            ini.SetIniValue("실행 순서", "1단계", comboBox8.Text);
            ini.SetIniValue("실행 순서", "2단계", comboBox9.Text);
            ini.SetIniValue("실행 순서", "3단계", comboBox10.Text);
            ini.SetIniValue("실행 순서", "4단계", comboBox11.Text);
            ini.SetIniValue("실행 순서", "5단계", comboBox12.Text);
            ini.SetIniValue("실행 순서", "6단계", comboBox13.Text);
            ini.SetIniValue("실행 순서", "7단계", comboBox14.Text);

            MessageBox.Show("실행 순서 저장되었습니다.");
        }
Пример #27
0
        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;
        }
Пример #28
0
        // 밝기값 밝게 하기, 횟수 기록
        private void button32_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 객체 생성 끝 /////////////////////////////////////////////////////////

            //Bitmap source = (Bitmap)pictureBox1.Image;

            Bitmap source = Global.source;

            // create filter
            BrightnessCorrection filter = new BrightnessCorrection(+10);
            // apply the filter
            filter.ApplyInPlace(source);

            Global.source = source;

            pictureBox1.Image = Global.source;
            pictureBox1.Invalidate();

            textBox22.Text = (int.Parse(textBox22.Text) + 1).ToString();
            ini.SetIniValue("밝기값", "밝게횟수", textBox22.Text.ToString());

            //string path = calculator.CreateFileCheck("C:\\Program Files\\PLOCR\\prescription.png");
            //pictureBox1.Image.Save(path);
        }
Пример #29
0
        // 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 값
        }
Пример #30
0
        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);
        }