본문 바로가기
IT/머신러닝

[머신러닝] C#을 이용한 이미지 머신러닝 - 2

by 뉴비 출근러 2025. 4. 22.
728x90

728x90
위치 컨트롤 이름
상단 TextBox adress_text
중간 PictrueBox pictrueBox1
하단 TextBox result_text
우측상단 Button btn_FileOpen

 

해당 화면에서 파일열기 버튼을 눌러 이미지 파일을 선택한 후

앞에서 학습시킨 데이터들과 비교하여 정확도를 result_text에 보여주는 간단한 프로그램입니다.

 

	//파일 오픈 이벤트
   OpenFileDialog openFileDialog1 = new OpenFileDialog();

   //사진파일만 필터해서 조회(jpg, png), 모든파일
   openFileDialog1.Filter = "Images (*.JPG; *.PNG) | *.JPG; *.PNG |" + "ALL files(*.*)|*.*";
   openFileDialog1.Title = "Select Photo"; //이름(없어도 상관없음)

   //폴더를 클릭했을 때 열렸는지 확인
   if (openFileDialog1.ShowDialog() == DialogResult.OK)
   {
       try
       {
           adress_text.Text = openFileDialog1.FileName; //파일명과 경로 복사
           pictureBox1.Image = Image.FromFile(adress_text.Text); //경로에서 선택한 이미지 파일을 픽쳐박스에 넣어줌
           Result(adress_text.Text);
       }
       catch (Exception)
       {
           MessageBox.Show("이미지 파일을 선택하여 주세요.");
       }
   }

우선 파일 열기 버튼을 눌렀을 때 OpenFileDialog로 파일 탐색기를 열어주는 부분입니다.

Filter는 파일 탐색기 우측 하단에 있는 파일 확장자를 미리 설정해 줍니다.

파일 선택이 정상적으로 이뤄졌다면 Result 메소드에 파일 경로를 String형식으로 던져줍니다.

 

private void Result(string _adress)
{
    var imageBytes = File.ReadAllBytes(_adress);    //ImageSource가 byte형식이라 인코딩해준다
    ModelInput input = new ModelInput()
    {
        ImageSource = imageBytes
    };
    ModelOutput result = Predict(input);

    float ex_temp;
    for (int i = 0; i < result.Score.Length - 1; i++)
    {
        for (int j = i + 1; j < result.Score.Length; j++)
        {
            if (result.Score[i] < result.Score[j])
            {
                ex_temp = result.Score[j];
                result.Score[j] = result.Score[i];
                result.Score[i] = ex_temp;
            }
        }
    }
    result_text.Text = $"{result.PredictedLabel} = {result.Score[0]*100:N2}";
}

받아온 파일 경로를 ModelInput에 ImageSource에 넣어주기 위해

Byte형식으로 변환하여 imageBytes변수에 담아 전달합니다.

 

선택한 이미지의 결과값을 result변수에 담고

점수 및 객체명을 정렬하여 result_text에 출력합니다.

 

 

728x90

'IT > 머신러닝' 카테고리의 다른 글

[머신러닝] C#을 이용한 이미지 머신러닝 - 1  (0) 2025.04.22