Python - Extraer datos obtenidos en tiempo real a un txt

 
Vista:
sin imagen de perfil

Extraer datos obtenidos en tiempo real a un txt

Publicado por pipee780 (3 intervenciones) el 01/12/2017 20:36:16
Buenas tardes:
Estoy realizando un proyecto en la universidad, en la cual tengo que medir la distancia entre dos puntos, para luego enviar estos datos hacia otro PC. Para ello necesito exportar los datos que obtengo de la medicion a un archivo txt, el problema es que en el codigo que estoy realizando puedo crear el archivo, pero este se encuentra en blanco. Estoy desarrollando el programa con la libreria opencv.
Lo ideal es que los datos queden en una columna como en la siguiente imagen:
MARCADORES
El codigo es el siguiente
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
import cv2
import numpy as np
 
#Captura de video a traves de la webcam
cap=cv2.VideoCapture(0)
 
D = []
max_samples = 10000
 
while(1):
    with open('new.txt', 'w') as outfile:
        d=0.1
        centers=[]
        _, img = cap.read()
 
        hsv=cv2.cvtColor(img,cv2.COLOR_BGR2HSV) #Se obtiene un histograma basada en las saturaciones de colores.
 
        blue_lower=np.array([95,150,100],np.uint8)
        blue_upper=np.array([150,255,255],np.uint8)
 
        blue=cv2.inRange(hsv,blue_lower,blue_upper) #Se crea una mascara utilizando intervalos de color azul.
 
        kernel = np.ones((5 ,5), "uint8") #Crea una matriz de 5x5 la cual recorrera el video,
        blue = cv2.morphologyEx(blue,cv2.MORPH_OPEN,kernel)
        blue = cv2.morphologyEx(blue,cv2.MORPH_CLOSE,kernel)
 
        blue=cv2.erode(blue,kernel, iterations=1) #Se erosiona utilizando el kernel sobre la mascara.
        res1=cv2.bitwise_and(img, img, mask = blue) #La nueva imagen reemplazara a blue.
 
 
        (_,contours,hierarchy)=cv2.findContours(blue,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE) #Encuentra los contornos de los objetos que se ven en el filtro
 
        for pic, contour in enumerate(contours):
            area = cv2.contourArea(contour) #funcion de opencv que obtiene los contornos
            mayor_contorno = max(contours, key = cv2.contourArea)
 
            if(area>1000):
                x,y,w,h = cv2.boundingRect(contour) #Encuentra coordenadas de los contornos.
                img = cv2.rectangle(img,(x,y),(x+w,y+h),(255,0,0),2)
                cv2.putText(img,"Marcador",(x,y),cv2.FONT_HERSHEY_SIMPLEX, 0.7, (255,0,0))
                M = cv2.moments(contour) #Se obtiene el centro de masa de los marcadores enconrados.
                cx = int(M['m10'] /M['m00'])
                cy = int(M['m01'] /M['m00'])
                centers.append([cx,cy])
                cv2.circle(img, (cx, cy), 7, (255, 255, 255), -1)
 
            if len(centers)==2:
                D = (np.linalg.norm(cx-cy))/10 #Se aplica distancia euclidiana para encontrar la distancia entre los centros de masa.
                print(D)
                outfile.write(" %d \n")
 
        cv2.imshow("Color Tracking",img)
        if cv2.waitKey(10) & 0xFF == ord('q'):
            outfile.close()
            print('The data is now the the new.txt file')
            cap.release()
            cv2.destroyAllWindows()
            break
Ojala me puedan ayudar
Saludos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de kip
Val: 1.120
Bronce
Ha mantenido su posición en Python (en relación al último mes)
Gráfica de Python

Extraer datos obtenidos en tiempo real a un txt

Publicado por kip (257 intervenciones) el 02/12/2017 20:51:39
Hola, te falta colocar la variable para que haga el formato correcto Python, en tu caso seria asi:

1
outfile.write(" %d \n" % D)

Intentalo y nos cuentas.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Extraer datos obtenidos en tiempo real a un txt

Publicado por Felipe (3 intervenciones) el 04/12/2017 14:58:22
Tuve problemas al logearme, asi que respondoc con esta cuenta.
El problema era que el
1
with open('new.txt', 'w') as outfile:
debe ir afuera del while, asi llena el archivo con datos, junto con la linea que adjuntaste.
Gracias por la ayuda :)
Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar