48 строки
1.7 KiB
Python
Исполняемый файл
48 строки
1.7 KiB
Python
Исполняемый файл
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()
|