diff --git a/clitools/generators/opencv2.py b/clitools/generators/opencv2.py new file mode 100755 index 0000000..e56c6cc --- /dev/null +++ b/clitools/generators/opencv2.py @@ -0,0 +1,47 @@ +import cv2 +import numpy as np +from PIL import Image +from numpy import asarray +import potrace +color = 65280 +camera = cv2.VideoCapture(0) +camera.set(cv2.CAP_PROP_FRAME_WIDTH, 160) +camera.set(cv2.CAP_PROP_FRAME_HEIGHT, 120) +camera.set(cv2.CAP_PROP_FPS, 5) +print("camera FPS:{} height:{} width:{}".format(camera.get(cv2.CAP_PROP_FPS), camera.get(cv2.CAP_PROP_FRAME_WIDTH), camera.get(cv2.CAP_PROP_FRAME_HEIGHT))) +while(camera.isOpened()): + pl = [] + ret, frame = camera.read() + if ret==True: + gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) + cv2.Canny(gray, 100,120 ) + (thresh, gray) = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY) + nb = cv2.cvtColor(asarray(gray), cv2.COLOR_RGB2BGR) + image = Image.fromarray(nb).convert("1") + image.save( "/tmp/cv.png") + bmp = potrace.Bitmap( asarray( image ) ) + # Trace the bitmap to a path + path= bmp.trace(turdsize=16,alphamax=0.0, opticurve=0, opttolerance=1.0) + # Iterate over path curves + for curve in path: + start = curve.start_point + pl.append([start[0],start[1],0]) + pl.append([start[0],start[1],color]) + for segment in curve: + end_point_x, end_point_y = segment.end_point + if segment.is_corner: + #c_x, c_y = segment.c + pass + else: + c1_x, c1_y = segment.c1 + x, y = segment.c2 + pl.append([x,y,color]) + pl.append([start[0],start[1],0]) + ret, frame = camera.read() + #print(len(pl), flush = True) + print(pl, flush = True) + else: + break + +# Release everything if job is finished +camera.release()