#!/usr/bin/env python
import mraa
import time
import numpy as np
import cv2
import os
button = mraa.Gpio(6)
button.dir(mraa.DIR_IN)
pump = mraa.Gpio(11)
pump.dir(mraa.DIR_OUT)
pump.write(0)
led = mraa.Gpio(12)
led.dir(mraa.DIR_OUT)
led.write(0)
buzzer = mraa.Gpio(4)
buzzer.dir(mraa.DIR_OUT)
buzzer.write(0)
cap = cv2.VideoCapture(0)
ret, frame = cap.read()
# delays
pumpDelay = 45
soakDelay = 15
# iteration = 0
# define range of pink color in HSV
lower_pink = np.array([110,50,50])
upper_pink = np.array([130,255,255])
def captureImage():
# Take each frame
ret, frame = cap.read()
print "read ret: " + str(ret)
# Convert BGR to HSV
hsv = cv2.cvtColor(frame, cv2.COLOR_BGR2HSV)
return hsv
def readImage(imgname):
print "read image" + imgname
img = cv2.imread(imgname,0)
# Convert BGR to HSV
hsv = cv2.cvtColor(img, cv2.COLOR_RGB2HSV)
return hsv
def calculatePinkPixels(image):
mask = cv2.inRange(image, lower_pink, upper_pink)
return cv2.countNonZero(mask)
def getButtonPress():
while True:
if (button.read() == 1):
print "Button Pressed %f" % (time.time())
return
else:
time.sleep(0.05)
def sendCurl(message):
command = "curl -X POST -H \"Content-Type: application/json\" -d '{\"value1\":\"%s\"}' https://maker.ifttt.com/trigger/dnaDetected/with/key/cTs_Jqc-oa-NLl-jo6dKL1" % (message)
os.system(command)
def chirpBuzz():
buzzer.write(1)
time.sleep(0.05)
buzzer.write(0)
def takeMeasurement(iteration):
print "...cap img 1"
img1 = captureImage()
# img1 = readImage("test_img#1.jpg")
cv2.imwrite('/home/root/programs/it%d-img1.jpg' % (iteration), img1, [cv2.IMWRITE_JPEG_QUALITY, 90])
print "...pump 1"
pump.write(1)
time.sleep(pumpDelay)
print "...pump 0"
pump.write(0)
time.sleep(soakDelay)
print "...cap img 2"
img2 = captureImage()
# img1 = readImage("test_img#2.jpg")
cv2.imwrite('/home/root/programs/it%d-img2.jpg' % (iteration), img2, [cv2.IMWRITE_JPEG_QUALITY, 90])
print "...calc pixels"
diffPinkPixels = calculatePinkPixels(img2) - calculatePinkPixels(img1)
print "...diff pink pixels %d" % (diffPinkPixels)
if diffPinkPixels > 100:
message = "DETECTED"
else:
message = "UNDETECTED"
print "...send curl"
sendCurl(message)
def run():
iteration = 0
while True:
getButtonPress()
print "buttonPressed"
led.write(1)
print "led on"
print "start measurement"
takeMeasurement(iteration)
print "end measurement"
led.write(0)
iteration = iteration + 1
def end():
print "releasing camera"
cap.release()
try:
run()
finally:
end()
Comments