123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- #!/usr/bin/env python
- #version : 2023.12.31
- #language : ch
- from maix import camera
- from maix import display
- from maix import image
- import numpy as np
- 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
-
- if cameraSize==True:
- camera.camera.config(size=(320,240))
- else:
- camera.camera.config(size=(240,320))
- image.load_freetype("/root/preset/fonts/SourceHanSansCN-Regular.otf")
- class Edge:
- model = {
- "param": "/root/preset/model/sobel_int8.param",
- "bin": "/root/preset/model/sobel_int8.bin"
- }
- input_size = (224, 224, 3)
- output_size = (222, 222, 3)
- options = {
- "model_type": "awnn",
- "inputs": {
- "input0": input_size
- },
- "outputs": {
- "output0": output_size
- },
- "mean": [127.5, 127.5, 127.5],
- "norm": [0.0078125, 0.0078125, 0.0078125],
- }
- def __init__(self):
- from maix import nn
- print("-- load model:", self.model)
- self.model = nn.load(self.model, opt=self.options)
- print("-- load ok")
- def __del__(self):
- del self.model
- m = Edge()
- canvas = image.new(size = (320, 240))
- while True:
- canvas.clear()
- img_edgedetection = getLcdRotation(camera.capture())
- img_edgedetection = img_edgedetection.resize(224, 224, padding = 0)
- out = m.model.forward(img_edgedetection, quantize=True, layout="hwc")
- out = out.astype(np.float32).reshape(m.output_size)
- out = (np.ndarray.__abs__(out) * 255 / out.max()).astype(np.uint8)
- data = out.tobytes()
- edgeModel = img_edgedetection.load(data,(222, 222), mode="RGB")
- # canvas = edgeModel
- if ScreenOrientation:
- canvasVER = canvas.crop(0,0,240,320)
- canvasVER = canvasVER.rotate(-90, adjust=1)
- display.show(canvasVER)
- else:
- canvas.draw_image(edgeModel,48,8)
- canvas.draw_image((image.open("/root/preset/img/exit_ff0000_24x24.png")).rotate(0, adjust=0),288,216,alpha=1)
- display.show(canvas)
|