Skip to content

Instantly share code, notes, and snippets.

@kkmonster
Last active November 23, 2020 18:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save kkmonster/d162f179b7fd5986ac625a9b21db342c to your computer and use it in GitHub Desktop.
Save kkmonster/d162f179b7fd5986ac625a9b21db342c to your computer and use it in GitHub Desktop.
t watch : take a picture into folder
import sensor, image, time, lcd, os
import time, touchscreen as ts
from machine import I2C
import lcd, image
from board import board_info
from fpioa_manager import *
from Maix import FPIOA, GPIO
def create_folder():
os.chdir("/sd/datasets")
sd_ls = os.listdir()
if not "c1" in sd_ls:
os.mkdir("c1")
if not "c2" in sd_ls:
os.mkdir("c2")
if not "c3" in sd_ls:
os.mkdir("c3")
if not "c4" in sd_ls:
os.mkdir("c4")
os.chdir("/sd")
def clear_all_pics():
os.chdir("/sd/datasets")
for path in os.listdir("c1"):
os.remove("c1/"+str(path))
for path in os.listdir("c2"):
os.remove("c2/"+str(path))
for path in os.listdir("c3"):
os.remove("c3/"+str(path))
for path in os.listdir("c4"):
os.remove("c4/"+str(path))
os.chdir("/sd")
fm.fpioa.set_function(board_info.BOOT_KEY,FPIOA.GPIO7)
Button=GPIO(GPIO.GPIO7,GPIO.PULL_UP)
sensor.reset()
sensor.set_pixformat(sensor.RGB565)
sensor.set_framesize(sensor.QVGA)
sensor.set_windowing((0, 0, 240, 240))
sensor.set_vflip(1)
sensor.run(1)
lcd.init(color=lcd.BLACK)
lcd.clear()
i2c = I2C(I2C.I2C0, freq=400000, scl=30, sda=31)
ts.init(i2c, 1)
devices = os.listdir("/")
if "sd" in devices:
os.chdir("/sd")
if not "datasets" in os.listdir():
os.mkdir("datasets")
else:
lcd.draw_string(70,100, "No uSD Card !!!", lcd.RED, lcd.BLACK)
while 1:
time.sleep(1)
create_folder()
class_1 = len(os.listdir("datasets/c1"))
class_2 = len(os.listdir("datasets/c2"))
class_3 = len(os.listdir("datasets/c3"))
class_4 = len(os.listdir("datasets/c4"))
status_last = ts.STATUS_IDLE
while True:
img = sensor.snapshot()
(status,x,y) = ts.read()
#print(status, x, y)
if Button.value() == 0:
lcd.clear()
time.sleep(1)
clear_all_pics()
class_1 = len(os.listdir("datasets/c1"))
class_2 = len(os.listdir("datasets/c2"))
class_3 = len(os.listdir("datasets/c3"))
class_4 = len(os.listdir("datasets/c4"))
if status > ts.STATUS_RELEASE and status_last == ts.STATUS_RELEASE:
if(x < 120 and y < 120):
class_1= class_1+1
img.save("datasets/c1/p_"+str(class_1)+".jpg", quality=90)
img.draw_rectangle(0, 0, 120, 120,lcd.GREEN, 1, 1)
if(x > 120 and y < 120):
class_2= class_2+1
img.save("datasets/c2/p_"+str(class_2)+".jpg", quality=90)
img.draw_rectangle(120, 0, 240, 120, lcd.GREEN, 1, 1)
if(x < 120 and y > 120):
class_3= class_3+1
img.save("datasets/c3/p_"+str(class_3)+".jpg", quality=90)
img.draw_rectangle(0, 120, 120, 240, lcd.GREEN, 1, 1)
if(x > 120 and y > 120):
class_4= class_4+1
img.save("datasets/c4/p_"+str(class_4)+".jpg", quality=90)
img.draw_rectangle(120, 120, 240, 240, lcd.GREEN, 1, 1)
status_last = status
img.draw_line(0, 120, 240, 120,lcd.RED,2)
img.draw_line(120, 0, 120, 240,lcd.RED,2)
img.draw_string(40,55, ("C1: %d Pics" %(class_1)), color=lcd.GREEN, scale=1)
img.draw_string(120+40,55, ("C2: %d Pics" %(class_2)), color=lcd.GREEN, scale=1)
img.draw_string(40,120+55, ("C3: %d Pics" %(class_3)), color=lcd.GREEN, scale=1)
img.draw_string(120+40,120+55, ("C4: %d Pics" %(class_4)), color=lcd.GREEN, scale=1)
lcd.display(img)
x_last = x
y_last = y
time.sleep_ms(50)
ts.__del__()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment