[LMS7 24/28주차] 1024 MFC 프로젝트, "음료캔 불량 판독 시스템" 완료 보고서

2025. 11. 4. 14:23·프로젝트/팀

1. 개발 완료 문서

 

완료 보고서

 

MFC 프로젝트 개발 완료 보고서

프로젝트 소개
프로젝트명
음료캔 불량 판독 시스템
개발 인원
이은서(팀장), 김영웅, 김재완, 최연주, 이왕신, 나현준
개발일시
2025/10/24 ~ 2025/10/31
장소
드론융합실
주요주제
인공지능 모델과 머신비전을 활용한 음료캔 불량 검출 프로그램 개발
개발 목적
- TCP/IP 기반의 클라이언트-서버 통신 구조에 대한 이해 및 구현 능력 향상
- MFC C++, C#, Python 등 이기종 언어 간 통신 연동 기술 학습
- BASLER웹캠, 머신비전을 활용해 이미지 캡처 및 전송 시스템 개발 능력 향상
- MySQL 데이터베이스를 활용한 데이터 저장 및 관리 구현
- 딥러닝 모델을 활용한 불량품 판별 기능 개발을 통해 인공지능 기술 실습
- 팀 협업 및 통합 테스트 경험을 통해 실무형 개발 능력 강화
개발 환경
- OS : Windows
- Language : C++, C#, Python
- Framework : MFC, Winform
- IDE : Visual Studio, Pycharm
- DBMS : MySQL
- VCS : GitHub
- etc. : YOLO, BASLER웹캠, Pylon, venv Python 가상환경
주요 구현
기능
1. C++ MFC 클라이언트
 
- PYLON 프로그램에 BASLER웹캠 2대 연결
- 웹캠을 통해 검사 대상(음료캔) 이미지 촬영 및 저장
- 촬영한 프레임 사진 C# 서버에 전송
- 서버로부터 수신한 판정 결과(정상/불량)를 텍스트 박스로 출력
- 과거 검사 로그를 전체 결과 리스트에서 조회 가능
​
2. C# 메인 서버
​
- 클라이언트로부터 수신한 이미지를 로컬 저장소에 저장
- 저장한 이미지를 Python AI 서버에 전송
- AI 서버의 분석 결과(정상/불량)를 수신해서 UI 표시(불량률을 그래프로 표시)
- AI 서버로부터 받은 판정 결과를 클라이언트에게 JSON 형식으로 전송
- 검사 로그 및 결과 데이터를 MySQL DB에 저장 및 관리
​
3. Python AI 서버
​
- 서버로부터 전송받은 이미지 전처리 수행
- 실시간 프레임 사진 수신해서 AI 추론을 통해 정상/불량 판별
- 분석 결과를 C# 서버로 전송
​
4. DB
​
- 프레임 사진 저장경로 저장
- 정상/불량 판별 결과 저장
문제점 &
해결방안
1. C++ MFC 클라이언트, C# 메인 서버, Python AI 서버 간의 연결과 데이터 송수신 시
포맷 불일치
​
: 양측에서 동일한 바이너리 전송 프로토콜 사용하여 호환성 확보
(JSON, 빅엔디안(Big-endian) 방식)
​
2. 인공지능 모델 학습 정도에 따른 불량률 조절 문제
​
: 데이터 다양화(조명, 각도, 이물 등)를 통해 학습 데이터 품질 향상
주기적으로 모델 재학습 및 성능 평가 프로세스 마련
개발후기
이은서
이번 프로젝트는 인공지능과 머신비전을 결합하여 음료캔의 불량 여부를 자동으로 판별하는 통합 시스템을 구현하는 것을 목표로 진행되었습니다. 저는 팀의 팀장으로서 전반적인 시스템 구조 설계와 AI 서버 모듈 구현을 맡았습니다.
​
C# 서버로부터 전송받은 이미지를 실시간으로 수신하여 전처리와 YOLO 모델 추론을 수행하고, 분석 결과를 JSON 포맷으로 C# 서버로 전송하는 기능을 구현했습니다. 또한 C++, C#, Python 간의 통신 과정에서 발생한 데이터 포맷 불일치 문제를 해결하기 위해 바이너리 전송 규약을 통일하고 빅엔디안(JSON) 구조를 표준화하여 시스템 안정성을 높였습니다. 학습 데이터의 다양성 부족으로 인한 인식률 문제는 조명·각도·배경이 다른 이미지를 추가 수집하고 모델을 재학습함으로써 개선했습니다.
​
프로젝트 진행 중에는 팀장으로서 전체 일정 관리와 역할 분담을 조율하며, GitHub를 통해 코드 버전 관리를 수행하고 주기적인 통합 테스트를 주도했습니다. 이를 통해 이기종 언어 간 통신, 인공지능 모델의 실시간 적용, 협업 기반 개발의 중요성을 실무 수준에서 경험할 수 있었습니다. 이번 프로젝트는 단순한 프로그램 구현을 넘어, 클라이언트-서버-AI 간 구조적 연동과 실제 산업 환경에 적용 가능한 머신비전 시스템 설계 능력을 기를 수 있었던 의미 있는 경험이었습니다.
김영웅
이번 프로젝트는 여러 가지 어려움과 시행착오가 있었지만,서로의 꾸준한 대화와 협력을 통해 문제들을 하나씩 해결해 나갈 수 있었습니다. 통신 구조, 데이터베이스 연동, AI 판정 처리 등 다양한 기술적 도전을 겪으면서 팀워크의 중요성과 함께 많은 경험을 쌓을 수 있었습니다.
​
서로의 아이디어를 공유하고 보완하며 완성도를 높여간 덕분에 최종적으로 안정적인 시스템을 구현하고 프로젝트를 성공적으로 마무리할 수 있었습니다.
​
이번 과정을 통해 협력과 소통의 가치, 그리고 끝까지 해내는 끈기의 중요함을 느낄 수 있었습니다.
김재완
이번 프로젝트에서 저는 C# 기반 서버와 Python AI 서버 간 통신 연동 및 결과 수신 기능 구현을 담당했습니다. 초기에는 서로 다른 언어 간의 통신 구조를 설계하는 데 어려움이 있었지만, TCP/IP 소켓 프로그래밍과 JSON 기반 데이터 교환 방식을 직접 구현하면서 이기종 시스템 간 연동 구조의 핵심 원리를 이해할 수 있었습니다.
​
특히, AI 서버로부터의 비동기 판정 결과 처리와 DB 저장 흐름 안정화 과정에서 여러 통신 오류와 데이터 불일치 문제가 발생했는데, 이를 해결하기 위해 송수신 버퍼 구조를 세분화하고, 패킷 단위 검증 로직을 추가하여 안정적인 데이터 흐름을 확보했습니다.
​
이번 경험을 통해 단순히 기능 구현을 넘어, 서버 구조의 신뢰성과 확장성을 고려한 설계의 중요성을 배웠습니다. 또한 팀 내에서 다른 파트(MFC 클라이언트, AI 모델 등)와의 연동 테스트를 반복하면서 협업의 효율성과 커뮤니케이션의 중요성을 실감했습니다.
​
짧은 기간이었지만, 프로젝트를 끝까지 완성하며 문제 해결 능력과 실무형 통합 개발 역량을 동시에 성장시킬 수 있었던 뜻깊은 경험이었습니다.
최연주
이번 음료캔 불량 판독 시스템 프로젝트를 통해 C++ MFC, C#, Python 간의 통신 구조를 직접 설계하고 구현하며 이기종 언어 연동의 복잡성을 이해할 수 있었습니다.
​
TCP/IP 기반의 클라이언트–서버 구조를 구축하고, 웹캠 영상 캡처 및 이미지 전송, AI 분석 결과 수신, DB 연동까지 전 과정을 통합함으로써 실무에 가까운 시스템 개발 경험을 쌓을 수 있었습니다.
​
특히 짧은 기간 동안 팀원 간 역할을 분담하여 효율적으로 협업하였고, 문제 발생 시 원인을 분석하고 개선하는 과정을 통해 문제 해결 능력과 개발 완성도를 함께 높일 수 있었습니다.
​
이번 프로젝트를 통해 기술적 역량뿐 아니라 협업 능력의 중요성을 다시 한 번 느꼈으며, 향후에는 AI 모델의 정확도 향상과 UI 개선 등을 통해 더욱 발전된 시스템으로 보완할 계획입니다.
이왕신
Motion_Vision 프로젝트에서 MFC 기반 클라이언트 개발을 담당하며, 여러 런타임 오류와 구조적 문제를 해결하는 과정에 참여했습니다. 초기 코드에서는 구조체 필드 불일치, INI 저장 함수 인자 오류, 잘못된 포인터 및 클래스 참조 등으로 인해 컴파일과 실행 단계 모두에서 오류가 발생했습니다.
​
이를 수정하기 위해 구조체 정의를 기준으로 모든 참조를 정리하고, 함수 호출 인자를 올바르게 보완했으며, 런타임 클래스 등록과 초기화 순서를 재구성하여 프로그램의 안정성을 확보했습니다.
​
특히 카메라 연결 및 실시간 영상 송출 기능이 정상적으로 동작하도록 구조를 개선하며 시스템 전반의 동작 흐름을 깊이 이해할 수 있었습니다. 이번 경험을 통해 MFC 구조와 런타임 메커니즘, 그리고 디버깅의 중요성을 다시 한 번 체감할 수 있었던 의미 있는 개발 과정이었습니다.
나현준
이번 프로젝트는 Basler pylon 카메라와 OpenCV를 융합하여 실시간 영상 캡처, 전송, 분석까지 모두 통합한 클라이언트 애플리케이션이었다. 처음에는 단순히 이미지를 찍어 서버에 보내는 구조였지만, 점점 기능이 확장되며 산업용 검사 시스템 수준으로 발전했다.
​
특히 라이브 프리뷰와 모션 감지, Flip(상하좌우 반전) 옵션, 로컬 저장 및 서버 연동을 안정적으로 결합하는 것이 핵심 과제였다. MFC의 타이머 메시지 루프와 스레드 동기화 문제로 UI가 멈추는 현상이 있었지만, 메시지 기반 구조로 재설계하여 해결했다. GDI+ 기반의 PreviewDlg를 추가해 촬영된 TOP/SIDE 이미지를 시각적으로 확인할 수 있게 하면서 사용자 경험이 크게 향상됐다. 카메라 설정 창(CameraSettingsDlg)을 별도로 구성해 장치 선택, IP/포트 입력, Flip 제어를 직관적으로 관리할 수 있도록 개선했다. 서버와의 TCP 통신에서는 응답 파싱 오류와 헤더 처리 문제를 반복 디버깅하며 안정적인 프로토콜 구조를 완성했다. 실시간성, 멀티스레드 안정성, 리소스 관리(GDI+, 소켓, pylon 핸들 등)를 고려하면서도 코드의 가독성을 유지하려 노력했다.
​
최종적으로는 산업용 검사 공정 클라이언트로서 실사용 가능한 완성도에 도달했다고 느꼈으며, 이번 개발을 통해 MFC 기반 실시간 영상처리 시스템의 구조 설계, UI 반응성 개선, 디버깅 전략에 대한 깊은 이해를 얻게 되었다.

​

 

일정표

​

 

요구사항 명세서

 

​

 

 

유스케이스

 

​

 

 

순서도

 

​

 

화면구성도

 

​

 

 

목업이미지

 

 

 

 

테이블 명세서

​

 

ERD

 

 

 


 

 

2. 스크린샷 기능설명

 

MFC(C++) 클라이언트

 

 

 


 

 

C# 메인 서버

 

 

 

​

 

 

 

 

 


 

Python AI 서버

 

 

 

 


 

DB

​


 

 

3. 프로그램 실행영상

 

전체 영상

 

동영상 서비스가 종료되어 해당 콘텐츠를 재생할 수 없습니다.

 

 

 

MFC 클라이언트(C++)

 

동영상 서비스가 종료되어 해당 콘텐츠를 재생할 수 없습니다.

 

 

 

C# 메인 서버

 

동영상 서비스가 종료되어 해당 콘텐츠를 재생할 수 없습니다.

 

 

 

Python AI 서버

 

동영상 서비스가 종료되어 해당 콘텐츠를 재생할 수 없습니다.

 

 

 

 


 

 

 

 

4. GitHub Repository

​

https://github.com/dldmstj4378/MFC_Project.git

 

GitHub - dldmstj4378/MFC_Project: 음료캔 불량 검출 시스템 구현 팀프로젝트

음료캔 불량 검출 시스템 구현 팀프로젝트. Contribute to dldmstj4378/MFC_Project development by creating an account on GitHub.

github.com

 

 

 

 

'프로젝트 > 팀' 카테고리의 다른 글

[LMS7 27/28주차] 1114 WPF 자유 프로젝트 "RCS (차량 원격 제어 시스템)" 완료 보고서  (0) 2025.12.11
[LMS7 27/28주차] 1114 WPF 자유 프로젝트 "차량 원격 제어 시스템" 개발계획서  (0) 2025.12.11
[LMS7 24/28주차] 1024 MFC 프로젝트, "음료캔 불량 판독 시스템" 개발 계획서  (0) 2025.11.04
[LMS7 1+/26주차] 0826 [제60회 전국기능경기대회] 전시 작품 제작 프로젝트, "HomeCare+" 완료 보고서  (0) 2025.10.23
[LMS7 16/26주차] 0826 [제60회 전국기능경기대회] 전시 작품 제작 프로젝트, "HomeCare+" 개발 계획서  (0) 2025.10.23
'프로젝트/팀' 카테고리의 다른 글
  • [LMS7 27/28주차] 1114 WPF 자유 프로젝트 "RCS (차량 원격 제어 시스템)" 완료 보고서
  • [LMS7 27/28주차] 1114 WPF 자유 프로젝트 "차량 원격 제어 시스템" 개발계획서
  • [LMS7 24/28주차] 1024 MFC 프로젝트, "음료캔 불량 판독 시스템" 개발 계획서
  • [LMS7 1+/26주차] 0826 [제60회 전국기능경기대회] 전시 작품 제작 프로젝트, "HomeCare+" 완료 보고서
yz1005
yz1005
.
  • yz1005
    Note
    yz1005
    • 분류 전체보기 (182)
      • SetUp (10)
      • 학습일지 (105)
        • Python (5)
        • C (11)
        • C++ (16)
        • C# (28)
        • DB (2)
        • TCP_Socket (4)
        • Qt (8)
        • Arduino (19)
        • Git GitHub (4)
        • 딥러닝 (4)
      • 프로젝트 (31)
        • 팀 (22)
        • 개인 (5)
        • 회사 (4)
      • 과제 (31)
      • 취업 (1)
  • 블로그 메뉴

    • 홈
    • 방명록
  • hELLO· Designed By정상우.v4.10.3
yz1005
[LMS7 24/28주차] 1024 MFC 프로젝트, "음료캔 불량 판독 시스템" 완료 보고서
상단으로

티스토리툴바