比賽總結
這個比賽雖然不是自己第一個打的比賽,卻是第一個全程都是自己準備的比賽,在準備過程中有太多感觸,記錄下來,當作紀念吧。
這次比賽的參賽的作品是一個
軟件篇
- TOTP認證:
//生成base64密鑰
pyotp.random_base32()
//初始化TOTP
t = pyotp.TOTP("J3IDLHIQOEM2S3KF",digest=hashlib.sha1)
//驗證TOTP密鑰的正確
result = t.verify(key.input)
//獲取當前TOTP密鑰
t.now()
//生成TOTP掃碼鏈接
t.provisioning_uri("[email protected]", issuer_name="mcc")
- 二維碼掃描驅動
import pyzbar.pyzbar as pyzbar
def decode_str(image):
barcodes = pyzbar.decode(image)
bardata=""
for barcode in barcodes:
# 提取條形碼的邊界框的位置
# 畫出圖像中條形碼的邊界框
(x, y, w, h) = barcode.rect
cv2.rectangle(image, (x, y), (x + w, y + h), (0, 0, 255), 2)
# 條形碼數據爲字節對象,所以如果我們想在輸出圖像上
# 畫出來,就需要先將它轉換成字符串
barcodeData = barcode.data.decode("utf-8")
barcodeType = barcode.type
# 繪出圖像上條形碼的數據和條形碼類型
text = "{} ({})".format(barcodeData, barcodeType)
cv2.putText(image, text, (x, y - 10), cv2.FONT_HERSHEY_SIMPLEX,
.5, (0, 0, 125), 2)
if barcodeData:
bardata=barcodeData
break
# 向終端打印條形碼數據和條形碼類型
#print("[INFO] Found {} barcode: {}".format(barcodeType, barcodeData))
return [bardata,image]
def detect():
camera = cv2.VideoCapture(0)
while True:
# 讀取當前幀
ret, frame = camera.read()
# 轉爲灰度圖像
gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)
im=decode_str(gray)
#print("=================")
#print(im)
#print("================")
cv2.waitKey(5)
cv2.imshow("camera", im[1])
if im[0]:
camera.release()
cv2.destroyAllWindows()
return im[0]
if __name__ == '__main__':
str=detect()
print(str)
這裏在樹莓派上實現真的遇到了特別多的坑,首先是安裝opencv,
apt-get install libopencv-dev python3-opencv
apt-get install libatlas-base-dev
//選擇安裝
sudo apt-get install libhdf5-dev
sudo apt-get install libhdf5-serial-dev
sudo apt-get install libcblas-dev
sudo apt-get install libatlas-base-dev
sudo apt-get install libjasper-dev
sudo apt-get install libqtgui4
sudo apt-get install libqt4-test
pip3 install opencv-python
//此處如果報錯則安裝opencv-contrib-python
這裏通過apt-get安裝主要是爲了裝依賴程序,剛開始安裝的時候也是通過pip安裝的,結果出了一堆錯,後來通過apt安裝直接解決了,還有就是安裝opencv的版本有要求,還有就是如果將掃碼程序做成後臺程序,則必須將imshow註釋掉,試過各種方法想從後臺將攝像頭的畫面顯示在顯示器上都失敗了,最後只是通過註釋inshow代碼解決了掃碼問題
硬件部分
這次比賽的機械結構是大佬幫忙搭的,也是有些尷尬,本專業的基本能力都不具備。這也是閒話,然後這次遇到的機械部分的問題總結起來主要是電壓問題,有時候真的覺得實際去做硬件有特別多的坑。剛開始的時候爲了圖方便,將顯示器直接通過電源拓展版供電,導致樹莓派電壓過低 ,反覆重啓,以爲是系統壞了,重刷了系統,也重新寫了部分遺失的代碼,後來是關於液晶和電磁鎖供電的問題,剛開始覺得12v供電正好,後來發現是無法啓動的,由於繼電器部分接口處有較大的電阻,導致壓降較大,因此電磁鎖無法正常開啓,後來串了一塊3.7v的電池,順利解決
感受
這次的感受還是挺多的,首先是自己第一次主導一個比賽,第一次主動找人合作做比賽,也是第一次答辯,感覺有很多不同,很享受這種感覺,在比賽前發現了同一個團隊的研究生師兄也參加了,他做的獲得了唯一的一個一等漿,感覺到那纔是自己真正想做到的。再有就是關於退出團隊這件事,自己到現在都覺得很坦然,想起當初大一時聽到的一句話,適合自己的纔是最好的,先在覺得自己在團隊浪費了太多的時間,團隊再好又如何,不適合自己也只是浪費時間,因此和隊長說了一下,直接退出了。