123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148 |
- #!/usr/bin/env python
- #version : 2023.12.31
- #language : pi
- from maix import image #引入python模块包
- from maix import camera, mjpg, utils, display
- import time
- import qrcode
- import sys
- import os
- import socket
- sys.path.append('/root/')
- from CocoPi import BUTTON
- import os
- ScreenOrientation = False
- try:
- if os.path.exists("/etc/cameraSize.cfg"):
- cameraSize = True
- else:
- cameraSize = False
- except:
- cameraSize = False
- def getLcdRotation(cameraCapture):
- global cameraSize
- if cameraSize:
- return lcdRotationNew(cameraCapture)
- else:
- return lcdRotation(cameraCapture)
- def lcdRotationNew(inputImg):
- global cameraSize,ScreenOrientation
- imageRotationBuffer = inputImg.crop(0, 0, 320, 240)
- if ScreenOrientation:
- imgRotationAim = image.new(size = (240, 320))
- rotationAngle = 90
- GETROTATION = imageRotationBuffer.rotate(+rotationAngle, adjust=1)
- else:
- imgRotationAim = image.new(size = (320, 240))
- GETROTATION = imageRotationBuffer
- GETROTATION = imgRotationAim.draw_image(GETROTATION,0,0,alpha=1)
- return GETROTATION
- def lcdRotation(inputImg):
- global cameraSize,ScreenOrientation
- imageRotationBuffer = inputImg.crop(0, 0, 240, 320)
- if ScreenOrientation:
- imgRotationAim = image.new(size = (240, 320))
- rotationAngle = 180
- else:
- imgRotationAim = image.new(size = (320, 240))
- rotationAngle = 90
- GETROTATION = imageRotationBuffer.rotate(+rotationAngle, adjust=1)
- GETROTATION = imgRotationAim.draw_image(GETROTATION,0,0,alpha=1)
- return GETROTATION
-
- def getWifiConnectState():
- wifiConnectState=False
- cmd = "wifi_get_connection_info_test 1"
- res = os.popen(cmd).read()
- if res.find('get connection infomation successfully!') != -1:
- wifiConnectState = True
- else:
- wifiConnectState = False
- return wifiConnectState
- def getPrivateIp():
- st = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)
- try:
- st.connect(("10.255.255.255",1))
- IP = st.getsockname()[0]
- except Exception:
- IP = "127.0.0.1"
- finally:
- st.close()
- return IP
- image.load_freetype("/root/preset/fonts/SourceHanSansCN-Regular.otf")
- PrivateIP=""
- canvas = image.new(size=(320, 240),color = (15,21,46),mode = "RGB")
- canvas.draw_string(8 , 100 , "检查网络连接状态...", scale = 1, color = (255,255,255), thickness = 1)
- display.show(canvas)
- wirelessTransmitPath=" "
- try:
- if getWifiConnectState()==True:
- PrivateIP=getPrivateIp()
- pathHead="http://"
- pathTail=":18811"
- wirelessTransmitPath=pathHead+PrivateIP+pathTail
- else:
- PrivateIP="N/A"
- wirelessTransmitPath="请先连接网络"
- except:
- wirelessTransmitPath="请先连接网络"
- pass
- os.system("rm /root/user/img/wirelessPictureTransmit.jpg")
- qrcode.make(wirelessTransmitPath).save("/root/user/img/wirelessPictureTransmit.jpg")
- key_A = BUTTON(14)
- key_B = BUTTON(8)
- key_C = BUTTON(13)
- key_D = BUTTON(7)
- buttonState=0
- newState=0
- oldState=0
- def buttonDetect():
- global buttonState,newState,oldState
- newState=key_C.is_pressed()
- if newState == True and oldState == False:
- buttonState=1
- elif newState == False and oldState == True:
- buttonState=2
- else:
- buttonState=0
- oldState=newState
- queue = mjpg.Queue(maxsize=8)
- mjpg.MjpgServerThread(
- "0.0.0.0", 18811, mjpg.BytesImageHandlerFactory(q=queue)).start()
- if cameraSize==True:
- camera.camera.config(size=(320,240))
- else:
- camera.camera.config(size=(240,320))
- qrShowState=0
- while True:
- buttonDetect()
-
- img_backdrop = image.new(size=(320,240),color=(0, 0, 0)) #创建背景画布
- camera_img = getLcdRotation(camera.capture()) #从摄像头中获取一张图像
- camera_img_capture = camera_img.crop(0, 0, 320, 240) #截取图像
- jpg = utils.rgb2jpg(camera_img.convert("RGB").tobytes(), 320, 240)
- queue.put(mjpg.BytesImage(jpg))
- img_backdrop.draw_image(camera_img)
- if buttonState==2:
- qrShowState=1-qrShowState
- if qrShowState==1:
- img_backdrop.draw_image(image.open("/root/user/img/wirelessPictureTransmit.jpg").resize(260,260), 30, -10,alpha=0.8)
- img_backdrop.draw_image((image.open("/root/preset/img/qrcode_3c83f0_24x24.png")).rotate(0, adjust=0),288,6,alpha=1)
- img_backdrop.draw_image((image.open("/root/preset/img/exit_ff0000_24x24.png")).rotate(0, adjust=0),288,216,alpha=1)
- display.show(img_backdrop) #将图像显示出来
|