더북(TheBook)

12행 mnist_cnn.pb 파일을 이용하여 Net 객체 net을 생성합니다.

14~17행 net 객체가 정상적으로 생성되지 않으면 에러 메시지를 출력하고 프로그램을 종료합니다.

19행 400×400 크기의 빈 영상 img를 생성합니다. 이후 img 영상에 숫자 그림을 그려서 숫자를 인식합니다.

22행 마우스 콜백 함수를 등록합니다. 마우스 콜백 함수에 사용자 데이터로 img 영상 주소를 전달합니다.

29행 img 창에서 키보드 Space 키를 누르면 dnn 인식을 수행합니다.

30행 img 영상을 28×28 크기로 줄이고, 픽셀 값을 0부터 1 사이로 정규화하여 네트워크에 입력으로 전달할 블롭 inputBlob을 생성합니다. inuptBlob은 4차원 행렬이고, 1×1×28×28 크기입니다.

31행 inputBlob을 네트워크 입력으로 설정합니다.

32행 네트워크를 순방향으로 실행하고, 네트워크 출력을 prob 행렬에 저장합니다. prob 행렬은 1×10 크기이고, 타입은 CV_32FC1입니다.

34~37행 prob 행렬에서 최댓값과 최댓값 위치를 찾습니다. 최댓값 maxVal은 최대 확률 값이며, 최댓값 위치 maxLoc.x는 가장 확률이 높은 숫자를 나타냅니다.

39행 인식된 숫자와 확률을 콘솔 창에 출력합니다.

41~42행 img 영상을 검은색으로 초기화하고, 화면에 출력합니다.

49~65행 마우스를 이용하여 img 영상에 숫자를 그리는 코드입니다. 자세한 코드 설명은 15.2.3절 코드 15-3을 참고하세요.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.