火炬電子杯電子智能大賽總結

比賽總結

這個比賽雖然不是自己第一個打的比賽,卻是第一個全程都是自己準備的比賽,在準備過程中有太多感觸,記錄下來,當作紀念吧。

這次比賽的參賽的作品是一個

軟件篇
  • 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的電池,順利解決

感受

這次的感受還是挺多的,首先是自己第一次主導一個比賽,第一次主動找人合作做比賽,也是第一次答辯,感覺有很多不同,很享受這種感覺,在比賽前發現了同一個團隊的研究生師兄也參加了,他做的獲得了唯一的一個一等漿,感覺到那纔是自己真正想做到的。再有就是關於退出團隊這件事,自己到現在都覺得很坦然,想起當初大一時聽到的一句話,適合自己的纔是最好的,先在覺得自己在團隊浪費了太多的時間,團隊再好又如何,不適合自己也只是浪費時間,因此和隊長說了一下,直接退出了。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章