나의 여행과 일상 일기장

(11) 캡스톤디자인 11강_실제 사진을 이용한 번호판 인식 본문

일상일기

(11) 캡스톤디자인 11강_실제 사진을 이용한 번호판 인식

똥글똥글 2022. 4. 27. 20:33
반응형

1. 새로운 번호판 인식 코드 newprocess.py로 교체

(1) 함수 씌우기

def computervision3():
    import sys    #코드 실행을 강제 종료하기 위해 import sys
    import numpy as np
    import os    #코드가 한번 실행한 후 기존의 사진파일을 삭제해야 한다.
    import pymysql  #데이터베이스 import
    from time import sleep    #sleep()을 사용하기 위한 방법
    import io # 파일을 읽고 쓰기위한 모듈
    import re
    import shutil

- 초음파 센서 다음에 유기적으로 실행하기 위해 computervision3함수를 씌웠고 sys, pymysql, time 등을 import

 

(2) 데이터베이스

    #네이버 클라우드 데이터베이스
    conn = pymysql.connect(host = 'xx.xx.xxx.xxx', user='xx', password='xx', db = 'firstdb', charset='utf8')
    
    curs=conn.cursor()

- 네이버 클라우드 데이터베이스와 연결하는 코드

 

(3) 이미지를 바이너리파일로 변환하는 함수

    def convertToBinaryData(filename):    #데이터베이스에 바이너리 이미지넣기
        with open(filename, 'rb') as file:
            binaryData = file.read()
        return binaryData

- 데이터베이스에는 이미지파일이 들어가지 않기 때문에 바이너리파일로 변환하는 함수를 생성

 

(4) 현재 시간변수 생성, 이미지 변환

      import datetime    #현재 시간을 넣기위해
      now = datetime.datetime.now()
      
      empPicture = convertToBinaryData("/home/pi/CarLicensePlate/test_img/pic.jpg")  #넣을 이미지의 위치지정

- 데이터베이스에 현재시간을 넣고 이미지를 바이너리로 만드는 함수를 이용하여 바이너리 파일로 변환

 

(5) 데이터베이스 입력

      sql = "UPDATE picam SET piTime = %s, piImg = %s, piExtract=%s where id=13"      #id가 13인 위치에 데이터 수정
      curs.execute(sql, (now, empPicture, carplate))  #sql실행
      
      conn.commit()
      conn.close()
      
      print(carplate)   #쉘에 출력

      return carplate  # 최종적으로 번호판이 출력되는 부분

- sql문을 이용해서 업데이트 방식으로 데이터베이스에 입력

(6) 마무리

	 #주차여부인식
    def parking_classfication(img_path):
    //
       for i in prediction_ap:
          pre_ans_ap = i.argmax()  # 예측 레이블
          pre_abs_str_ap =''
          
          if pre_ans_ap > 0.5 :   #주차 안됨
             pre_ans_str_ap = "주차 상태 아님"
             print("해당 " + img_path + " 이미지는 " + pre_ans_str_ap + "으로 추정됩니다.")
             print("다시 조도센서 인식으로 넘어갑니다.")    #주차되지 않았다고 판단
             import serialard
             serialard.sensor()
             
          else :       #주차됨
             pre_ans_str_ap = "주차완료"
             print("해당 " + img_path + " 이미지는 " + pre_ans_str_ap + "로 추정됩니다.")
             sleep(1)
             recognition_carlicenseplate('/home/pi/CarLicensePlate/test_img/pic2.jpg','/home/pi/testfolder') #번호판 추출
             print("cnn 주차됨. QRcode 인식으로 넘어갑니다 ")
             import qrprocess 
             qrprocess.qr()          
            
          #cnt += 1

    parking_classfication("/home/pi/CarLicensePlate/test_img/pic2.jpg")
    #sys.exit(1)  #메모리 과부하를 막기 위한 exit()
    //

- "주차완료"와 "주차상태 아님"으로 나누었다. 기존 방식과 마찬가지로 번호판 인식 후에 qrcode인식으로 넘어가기

 

2. cnn모델만들기

- 그동안은 인터넷에서 찾은 데이터를 가지고 기계를 학습했지만 이제는 실제 파이카메라로 찍은 사진들을 이용해서 기계학습 해야 할 것이다.

.

반응형