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 |
---|