コード例 #1
0
def get_img():
    print("Sto scattando una foto...")
    camera = picamera.PiCamera()
    camera.start_preview()
    camera.annotate_text = data_ora.data_ora_attuale()
    time.sleep(5)
    camera.resolution = (500, 600)
    camera.capture(
        '/home/pi/FliesFree/Programma_Prova2_Raspberry/Trappola/%s.jpg' %
        data_ora.data_ora_attuale())
    camera.stop_preview()
    print("Foto scattata.")
コード例 #2
0
def visual_scatto():
    print("Visualizzazione scatto")
    img = cv.imread(
        '/home/pi/FliesFree/Programma_Prova2_Raspberry/Trappola/%s.jpg' %
        data_ora.data_ora_attuale())
    cv.imshow('Scatto', img)
    cv.waitKey(0)
コード例 #3
0
def visual_scatto():
    print("Visualizzazione scatto")
    img = cv.imread(
        '/home/pi/FliesFree/Prove/Prove_Python/Flies_Free_Prova1/Trappola/%s.jpg'
        % data_ora.data_ora_attuale())
    cv.imshow('Scatto', img)
    cv.waitKey(0)
コード例 #4
0
def get_img():
    print("Sto scattando una foto...")
    camera = PiCamera()
    camera.start_preview()
    camera.annotate_text = data_ora.data_ora_attuale()
    time.sleep(5)
    camera.capture('/home/pi/FliesFree/Prove/Prove_Python/Flies_Free_Prova1/Trappola/%s.jpg' % data_ora.data_ora_attuale())
    camera.stop_preview()
    print("Foto scattata.")
コード例 #5
0
def frammenta():
	invio.invio_dongle("codice",1)
	image = 'Risultati/result_%s.jpg'%data_ora.data_ora_attuale()
	#image = 'Risultati/result_2018_2_25_13.jpg'
#-------------Converte immagine in base64 e conta i caratteri che la compongono----
	image_64 = base64.encodestring(open(image,"rb").read())
	print(image_64)
	print(len(image_64))


	num = len(image_64) #Numero caratteri composti dall'immagine
	#num = 1000
	dec = 0 #Contatore per pacchettidi stringhe
	nuova_stringa = ""
#---Ciclo per creazione pacchetti di stringhe e rimozione dei caratteri che non vengono letti dalle dongle----
	for n in range(0,num):
		print(n)
		time.sleep(0.2)
		if n > 0:
			dec = dec+80
			n = dec
			if n > num:
				break
			else:	
				print(n)
				m = n+80
				if m > num:
					m = num
					nuova_stringa = image_64[n:m].replace("/","_")
					nuova_stringa = nuova_stringa.replace("\n","")
					nuova_stringa = nuova_stringa.replace("=",".")
					print(nuova_stringa)
					invio.invio_dongle("image",nuova_stringa)
					#time.sleep(0.05)
				else:
					#print(m)
					nuova_stringa = image_64[n:m].replace("/","_")
					nuova_stringa = nuova_stringa.replace("\n","")
					nuova_stringa = nuova_stringa.replace("=",".")
					print(nuova_stringa)
					invio.invio_dongle("image",nuova_stringa)
					#time.sleep(0.05)
		else:
			print(n)
			m = n+80
			#print(m)
			nuova_stringa = image_64[n:m].replace("/","_")
			nuova_stringa = nuova_stringa.replace("\n","")
			nuova_stringa = nuova_stringa.replace("=",".")
			print(nuova_stringa)
			invio.invio_dongle("image",nuova_stringa)
			#time.sleep(0.05)


	print("----Frammentazione conclusa---")
	invio.invio_dongle("onoff","1")
コード例 #6
0
def preleva_lista():
    controllo = 0
    cod = 0
    ident = 0
    contr = 0
    for n in range(0, 40):
        db = MySQLdb.connect(host="localhost",
                             user="******",
                             passwd="root",
                             db="Logs")
        cur = db.cursor()
        cur.execute("SELECT id,onoff,codice FROM `11` WHERE onoff=1")
        for row in cur.fetchall():
            cod = row[2]
            controllo = row[1]
            ident = row[0]
        print(cod)
        print(controllo)
        print(ident)
        if cod > 0 and controllo == 1 and contr == 0:
            sql = "SELECT * FROM `11` WHERE id>1 and codice="
            cod = repr(cod)
            sql = sql + cod
            ident = repr(ident)
            ident = ident.replace("L", "")
            sql2 = " and id<" + ident
            sql = sql + sql2
            print(sql)
            cur.execute(sql)
            #cur.execute("DELETE FROM Logs.`11` WHERE `id`>1")
            image_64 = ""

            for row in cur.fetchall():
                if row[5] <> "0":
                    image_64 = image_64 + row[5]
            image_64 = image_64.replace("_", "/")
            image_64 = image_64.replace(".", "=")
            print(image_64)
            base_64_decode = base64.decodestring(image_64)
            immagine = open(
                "Risultati/result_slave_%s.png" % data_ora.data_ora_attuale(),
                "wb")
            immagine.write(base_64_decode)
            immagine.close()
            #cur.execute("DELETE FROM `11` WHERE id>1")
            contr = 1
            print("Immagine elaborata!")

        db.close()
        time.sleep(10)
コード例 #7
0
def trova_mosche():
    print("Ricerca mosche in corso...")
    img_rgb = cv.imread('/home/pi/FliesFree/Prove/Prove_Python/Flies_Free_Prova1/Trappola/%s.jpg' %data_ora.data_ora_attuale())
    img_gray = cv.cvtColor(img_rgb, cv.COLOR_BGR2GRAY)
    template1 = cv.imread('/home/pi/FliesFree/Prove/Prove_Python/Flies_Free_Prova1/Mosche/mosca1.jpg',0)
    template2 = cv.imread('/home/pi/FliesFree/Prove/Prove_Python/Flies_Free_Prova1/Mosche/mosca2.jpg',0)
    w, h = template1.shape[::-1]
    w2, h2 = template2.shape[::-1]
    #----------Il confronto avviene su due immagini campioni----------
    res1 = cv.matchTemplate(img_gray,template1,cv.TM_CCOEFF_NORMED)
    res2 = cv.matchTemplate(img_gray,template2,cv.TM_CCOEFF_NORMED)
    threshold = 0.8
    loc = np.where( res1 >= threshold)#Matrice di immagine
    loc2 = np.where( res2 >= threshold)#Matrice di immagine
    
    num_mosche = 0 #numero delle mosche trovate
    num_cicli = 0 #numero di cicli
    conf = 0 #Variabile di confronto per poter contare i numero di rettangoli
    
    #Vengono evidenziate le zone dove sono state riscontrate delle mosche
    for pt in zip(*loc[::-1]):
   #------Algortitmo conteggio mosche-------     
        if num_cicli == 0:
            conf = pt[0]
            num_cicli = num_cicli + 1
            num_mosche = num_mosche + 1
        else:
            num_cicli = num_cicli + 1
            if (conf-30)<pt[0] and (conf+30)>pt[0]:
                conf = pt[0]
            else:
                num_mosche = num_mosche + 1
                conf = pt[0]
                
   #-----------------------------------------
        cv.rectangle(img_rgb, pt, (pt[0] + w, pt[1] + h), (0,0,255), 1)
        
    num_cicli = 0 #Riposto a zero i numero di cicli per ricominciare la conta
    
    for pt2 in zip(*loc2[::-1]):
    #------Algortitmo conteggio mosche-------     
        if num_cicli == 0:
            conf = pt[0]
            num_cicli = num_cicli + 1
            num_mosche = num_mosche + 1
        else:
            num_cicli = num_cicli + 1
            if (conf-30)<pt[0] and (conf+30)>pt[0]:
                conf = pt[0]
            else:
                num_mosche = num_mosche + 1
                conf = pt[0]
                
   #-----------------------------------------
        cv.rectangle(img_rgb, pt2, (pt2[0] + w2, pt2[1] + h2), (0,0,255), 1)
        
    #Viene salvata l'immagine con le relative mosche evidenziate    
    cv.imwrite('Risultati/result_%s.png'%data_ora.data_ora_attuale(),img_rgb)
    print("Ricerca mosche coompletata...")
    print("Mosche trovate:")
    print(num_mosche)
    num_mosche = 0 #Riposrto a zero il numero delle mosche per una conta futura
コード例 #8
0
import cattura_immagine
import elabora_immagine
import invio_web_server as invio
import data_ora as d
import dati_db

#Cattura immagine tramite scatto con la PiCamera
cattura_immagine.get_img()

#Elaora l'immagine con un algoritmo OpenCV
elabora_immagine.trova_mosche()

#Invia il risultato della foto sul server
url_foto = 'Risultati/result_%s.png' % d.data_ora_attuale()
invio.invio_foto(url_foto)

#Preleva dati dal db per comporre l'immagine
dati_db.preleva_lista()
dati_db.svuota_lista()