87 lines
2.3 KiB
Python
87 lines
2.3 KiB
Python
#sudo ~/build/opencv-webcam-demo/opencv-webcam-demo --data ~/affdex-sdk/data --faceMode 1 --numFaces 40 --draw 1
|
|
#sudo ~/build/opencv-webcam-demo/opencv-webcam-demo --data ~/affdex-sdk/data --faceMode 1 --numFaces 100 -o ~/output -f ~/emo_in_file.jpg
|
|
import subprocess
|
|
import json
|
|
|
|
import threading
|
|
import logging
|
|
|
|
logging.basicConfig(level=logging.DEBUG,
|
|
format='(%(threadName)-10s) %(message)s',
|
|
)
|
|
|
|
outputDir = "/home/crowd/output"
|
|
tmpImgFile = "/home/crowd/emo_in_file.jpg"
|
|
|
|
|
|
def handleLine(msg):
|
|
try:
|
|
j = json.loads(msg)
|
|
except Exception as e:
|
|
logging.error("Couldn't parse json " + msg)
|
|
return
|
|
|
|
#now we have json
|
|
logging.debug(j)
|
|
|
|
print " ".join([
|
|
'gphoto2',
|
|
"--port", "usb:",
|
|
"--capture-image-and-download",
|
|
"-I", "1", # photo every second
|
|
"--filename="+tmpImgFile, "--force-overwrite",
|
|
])
|
|
print " ".join([
|
|
'/home/crowd/build/opencv-webcam-demo/opencv-webcam-demo',
|
|
"--data", "/home/crowd/affdex-sdk/data",
|
|
"--faceMode", "1",
|
|
"--numFaces", "40",
|
|
"--draw", "1",
|
|
"-o", outputDir,
|
|
"-f", tmpImgFile,
|
|
])
|
|
|
|
|
|
# gphoto2 --port usb: --capture-image-and-download -I 1 --filename=~/test.jpg --force-overwrite
|
|
def captureImages():
|
|
procCapture = subprocess.Popen([
|
|
'gphoto2',
|
|
"--port", "usb:",
|
|
"--capture-image-and-download",
|
|
"-I", "1", # photo every second
|
|
"--filename="+tmpImgFile, "--force-overwrite",
|
|
],stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
|
|
while procCapture.poll() is None:
|
|
line = procCapture.stdout.readline()
|
|
if line == '':
|
|
continue
|
|
logging.debug(line)
|
|
if line.startswith("*** Error"):
|
|
raise Exception("Camera not found on USB, or unable to claim it")
|
|
return
|
|
|
|
def processImages():
|
|
procProcess = subprocess.Popen([
|
|
'/home/crowd/build/opencv-webcam-demo/opencv-webcam-demo',
|
|
"--data", "/home/crowd/affdex-sdk/data",
|
|
"--faceMode", "1",
|
|
"--numFaces", "40",
|
|
"--draw", "1",
|
|
"-o", outputDir,
|
|
"-f", tmpImgFile,
|
|
],stdout=subprocess.PIPE, stderr=subprocess.PIPE)
|
|
while procProcess.poll() is None:
|
|
line = procProcess.stdout.readline()
|
|
if line == '':
|
|
continue
|
|
|
|
handleLine(line)
|
|
return
|
|
|
|
|
|
|
|
captureThread = threading.Thread(name='capture', target=captureImages)
|
|
processThread = threading.Thread(name='process', target=processImages)
|
|
|
|
captureThread.start()
|
|
processThread.start()
|