1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- 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()
|