일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- 아쿠아리움
- 일본 후쿠오카 여행
- 동해
- 하와이 맛집
- 하와이 액티비티
- 하와이 가볼만한곳
- 다낭 호이안 올드타운 맛집
- 교토 가볼만한곳
- 호텔 스카이파크
- 하와이 카페
- 코엑스
- 오사카 가볼만한곳
- 다낭 호이안 올드타운 카페
- 교토 여행
- 베트남 다낭 태교 여행
- 제주도 여행계획
- 서울 가볼만한곳
- 제주도 여행 계획
- 영동 가볼만한곳
- 대전 신세계
- 제주도 가볼만한곳
- 서울 맛집
- 오사카 여행
- 엠버호텔
- 비짓재팬웹
- 낙산공원
- 하와이 여행
- 강릉
- 순천
- 교토역 스타벅스
- Today
- Total
나의 여행과 일상 일기장
(9) 캡스톤디자인 9강_qrprocess.py 수정 본문
1. 데이터베이스 삽입 시 Timestamp 수정
https://technote.kr/264 블로그 참고
//
import datetime #현재 시간을 넣기위해
now = datetime.datetime.now()
empPicture = convertToBinaryData("/home/pi/CarLicensePlate/test_img/pic.jpg") #넣을 이미지의 위치지정
sql = "UPDATE picam SET piTime = %s, piImg = %s, piExtract=%s where id=13" #id가 13인 위치에 데이터 수정
#sql = "Insert into picam (piPlot, piPorD, piName, piTime, piImg, piExtract) VALUES (%s, %s,%s,%s,%s,%s)"
# sql = "UPDTAE picam SET piImg = %s, piExtract=%s where piName=%s and piPlot=%s"
#curs.execute(sql, ('한성대학교 주차장','D','P1', now, empPicture, chars)) #sql실행
curs.execute(sql, (now, empPicture, chars)) #sql실행
conn.commit()
conn.close()
//
- 기존의 데이터베이스 삽입은 이미지와 글자를 넣을 수 있고 시간은 업데이트되지 않았었다. 그래서 datetime을 import하고 현재의 시간을 가져와서 sql문에 업데이트 하면 차가 들어올 때마다 현재시간으로 업데이트된다.
2. QRcode 이미지 출력
- 파이카메라로 찍었을 때 이미지
3. 부저 단독 코드(부저코드의 모듈화하여 어디서든 사용할 수 있게한다)
- qrprocess.py 코드에서 장애인이나 임산부가 아닌 불법차량이라면 buzzer.py가 실행되며 부저로 경고를 하고 불법주차가 나갔는지 확인하기 위해 serialmicro2.py코드를 실행한다.
import sys
def buz(): #불법주차인지 확인하기 위한 부저
import RPi.GPIO as GPIO
import time
from time import sleep
GPIO.cleanup() # cleanup all GPIO
GPIO.setmode(GPIO.BCM) # Broadcom pin-numbering scheme
GPIO.setup(26, GPIO.OUT) # output rf
GPIO.output(26, GPIO.HIGH)
sleep(1) #1초동안 부저가 울린다.
GPIO.cleanup() # cleanup all GPIO
import serialmicro2 #불법주차인지 확인하기 위해 초음파센서2로 넘어가기
serialmicro2.micro2()
sys.exit(1)
buz()
4. QRcode 분석코드 수정
- QRcode 인식 코드에 데이터베이스에 접근하여 데이터를 삽입하는 기능 구현하기 ----> 약간 수정할 부분이 남아있음
- Qrprocess.py 코드 수정--> 색깔 인식은 빼고 그레이스케일에서 이미지 분석하기 --> 인식완료
-> 멀리서도 QRcode인식이 잘되기 때문에 조도센서 인식때 1번만 사진을 찍는다.
1) qrprocess.py ver7
import sys
def qr():
import pymysql #데이터베이스 import
from datetime import datetime
import cv2
import matplotlib.pyplot as plt
import matplotlib.image as mpimg
import pyzbar.pyzbar as pyzbar
import matplotlib.pyplot as plt
#네이버 클라우드 데이터베이스
conn = pymysql.connect(host = 'xx.xx.xx.xx', user='xx', password='xx', db = 'firstdb', charset='utf8')
#라즈베리파이 local 데이터베이스 연결
#conn = pymysql.connect(host = 'localhost', user='phpmyadmin', password='1234', db = 'testDB', charset='utf8')
curs=conn.cursor() #데이터베이스 커서 생성
img = cv2.imread('/home/pi/CarLicensePlate/test_img/pic.jpg')
plt.imshow(img)
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
plt.imshow(gray, cmap='gray')
decoded = pyzbar.decode(gray)
decoded #[Decoded(data=b'bbanghyong', type='CODE128', rect=Rect(left=19, top=10, width=140, height=17), polygon=[Point(x=19, y=11), Point(x=19, y=27), Point(x=159, y=26), Point(x=159, y=10)])]
stnowday = datetime.today().strftime("%Y%m%d")
nowday = int(stnowday)
for d in decoded:
# print(d.data.decode('utf-8'))
#print(d.type)
data1=d.data.decode('utf-8').split(' ')[0] #P or D
data2=d.data.decode('utf-8').split(' ')[1] #유효기간
print(data1)
print(data2)
if(int(data2)>=nowday):
print("유효한 코드입니다")
if(data1=='P'):
print("임산부")
sql = "UPDATE picam SET piPorD = %s,piTF =%s where id=13" #id가 13인 위치에 데이터 수정(임산부, TF 설정)
curs.execute(sql, (data1,'T')) #sql실행
conn.commit()
conn.close()
import serialard #다시 조도센서로 출입하는 차량을 인식하기 위한 import
serialard.sensor()
sys.exit(1)
elif(data1=='D'):
print("장애인")
sql = "UPDATE picam SET piPorD = %s,piTF =%s where id=13" #id가 13인 위치에 데이터 수정(장애인, TF 설정)
curs.execute(sql, (data1,'T')) #sql실행
conn.commit()
conn.close()
import serialard #다시 조도센서로 출입하는 차량을 인식하기 위한 import
serialard.sensor()
sys.exit(1)
else:
print("유효하지 않은 코드입니다")
import buzzer #유효하지 않은 코드인 경우 부저
buzzer.buz()
sys.exit(1)
else:
print("만료된 코드입니다")
import buzzer #만료된 코드인 경우 부저
buzzer.buz()
sys.exit(1)
plt.imshow(img)
qr()
- qrcode로부터 기간을 추출하여 기간이 만료되었다면 부저가 울리는 프로세스를 실행하고 기간이 유효하다면 코드를 추출한다.
- 코드를 추출하여 임산부와 장애인을 구분하고 코드가 D 또는 P라면 데이터베이스에 알맞은 id값을 찾아서 데이터를 업데이트한 후 처음 단계인 조도센서 인식으로 넘어간다. 만약 유효하지 않은 코드라면 부저가 울리는 프로세스를 실행한다.
5. 터미널 캡쳐하기
'일상일기' 카테고리의 다른 글
(11) 캡스톤디자인 11강_실제 사진을 이용한 번호판 인식 (0) | 2022.04.27 |
---|---|
(10) 캡스톤디자인 10강_유효하지 않은 QRcode 처리 (0) | 2022.04.27 |
(8) 캡스톤디자인 8강_부저 모듈과 QRcode 인식 (0) | 2022.04.26 |
(7) 캡스톤디자인 7강_프로토타이핑과 led센서 추가 (0) | 2022.04.25 |
(6) 캡스톤디자인 6강_조도센서, 초음파센서, 번호판인식 수정 및 프로토타입 (0) | 2022.04.25 |