Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    [C] salvare immagine in dropbox

    Salve ragazzi, sto facendo un progetto in C (insieme ad Arduino) per un "antifurto" fatto in casa..ho una webcam collegata al pc che scatta delle foto quando intercetta un segnale da Arduino. Per ora le foto vengono salvate in una cartella specifica ma avrei la necessità di averle SEMPRE a disposizione, l'idea principale (e sinceramente quella che più mi piace) a cui pensavo era di farmele mandare ad un indirizzo email ma, dopo essermi informato accuratamente, ho capito che in C diventerebbe davvero molto complesso (non saprei da dove iniziare perchè tutta la documentazione che ho avuto modo di leggere è davvero troppo vaga) il chè mi ha fatto rinunciare a questa soluzione (se comunque siete a conoscenza di qualche metodo non troppo complesso (o di qualche tutorial preciso e mirato) per farlo ditemi pure! Non sono proprio alle prime armi con C, e il motivo principale per cui mi sto cimentando in questo progetto è IMPARARE qualcosa di nuovo!)

    Venendo al dunque come alternativa alle email mi sono detto "e se le salvassi in dropbox?" così ho ripiegato su questa soluzione, ho creato un collegamento alla cartella di dropbox e (per semplicità) l'ho rinominata "immagini", poi ho scritto questo pezzetto di codice per vedere se riuscivo nell'impresa:
    codice:
    #include <stdio.h>
    #include "opencv2/highgui/highgui.hpp"
    
    int main(){
    	//creazione oggetti di cattura
    	CvCapture *capture1 = cvCreateCameraCapture(1);
    	CvCapture *capture2 = cvCreateCameraCapture(0);
    
    	//controllo
    	if(!capture1){
    		puts("la webcam di default non risponde\n");
    		return -1;
    	}
    
    	if(!capture2){
    		puts("la webcam esterna1 non risponde\n");
    		return -1;
    	}
    	//creazione matrici immagini
    	IplImage *frame1, *frame2;
    
    	//creazione finestre
    	cvNamedWindow("WEBCAM_DEFAULT", CV_WINDOW_AUTOSIZE);
    	cvNamedWindow("WEBCAM_ESTERNA1", CV_WINDOW_AUTOSIZE);
    
    	//ciclo infinito (si esce premendo un tasto qualsiasi)
    	for(;;){
    		//scatto le foto
    		frame1 = cvQueryFrame(capture1);
    		frame2 = cvQueryFrame(capture2);
    
    
    		//le visualizzo
    		cvShowImage("WEBCAM_DEFAULT", frame1);
    		cvShowImage("WEBCAM_ESTERNA1", frame2);
    
    		//metto in pausa per 33millisecondi
    		cvWaitKey(33);
    		
    		if(_kbhit())
    			break;
    	}
    	//salvo l'immagine "frame1" nella cartella immagini (collegamento a dropbox)
    	cvSaveImage("immagini/immagine1.jpg", frame1, 0);
    	
    	//rilascio le risorse
    	cvDestroyWindow("WEBCAM_DEFAULT");
    	cvDestroyWindow("WEBCAM_ESTERNA1");
    
    	cvReleaseCapture(&capture1);
    	cvReleaseCapture(&capture2);
    
    	return 0;
    }
    ma non va, non da errori di nessun tipo ma comunque non salva niente...
    Chi mi da una mano a venirne fuori?

    Ringrazio in anticipo chiunque vorrà farlo (:

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Ma quel "ciclo infinito" lo interrompi tu con un tasto per salvare la foto?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Il collegamento in questione è un collegamento di Windows Explorer (file .lnk) o è un link simbolico?
    Amaro C++, il gusto pieno dell'undefined behavior.

  4. #4
    @oregon: esatto, non appena premo un tasto esce dal ciclo ed esegue le istruzioni successive (anche il salvataggio), se al posto della cartella collegata a dropbox avessi una normale directory il programma salverebbe l'ultimo frame scattato in quella cartella denominandolo "immagine1.jpg", ma con questa purtroppo non lo fa e non capisco perchè..

    @MItaly: non credo di aver capito bene la tua domanda..comunque sto programmando sotto Windows e la cartella in questione è nella stessa directory del file .exe che apro per eseguire il programma; ripeto: se cancello quella cartella e creo una semplice directory di nome "immagini" funziona tutto a dovere, con questa purtroppo non succede niente, ma comunque non da nessun tipo di errore

  5. #5
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,466
    Ma non devi usare un link alla cartella ma l'indirizzo della cartella del tuo sistema che è sincronizzata con dropbox.
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  6. #6
    Ah ok, ci provo subito e vi faccio sapere..!!

  7. #7
    Intendo dire: hai fatto un collegamento "normale" con Esplora Risorse (o come si chiama nelle versioni recenti di Windows)? Perché i collegamenti di quel tipo sono semplicemente dei file .lnk, è solo esplora risorse che fa sì che cliccandoci apra un'altra cartella, per cui non puoi scriverci dentro come se fosse una cartella vera (questo a differenza dei link simbolici e delle junction, che invece sono implementati a livello di kernel, e che quindi possono essere usati da qualunque applicazione in maniera trasparente).
    Amaro C++, il gusto pieno dell'undefined behavior.

  8. #8
    Ragazzi ho risolto passando direttamente l'indirizzo "originale" della cartella di Dropbox...non pensavo fosse così semplice

    Comunque @MItaly credo di aver fatto un collegamento "normale" ovvero ho semplicemente cliccato sulla cartella originale col destro e poi --> crea collegamento :P

    PS per il discorso "inviare email con C" potete indicarmi qualche buon tutorial così studio anche su questo? Grazie per la pazienza (:

  9. #9

    [C - OpenCV] riconoscere pixel più "luminosi"

    Salve ragazzi, sto facendo un piccolo progetto in C con le librerie OpenCV.
    Ho attaccato un puntatore laser (rosso) alla webcam, e quello che mi "serve" di fare in poche parole è riconoscere il puntino nelle foto della webcam, calcolare la distanza (contare il numero di pixel) dal puntino al centro dell'immagine e tracciare due righe (perpendicolari) rosse che dividono in 4 l'immagine e che si intersecano sul puntino formando una specie di croce..

    Ho scaricato svariati manuali di OpenCV (a dire il vero è da un po' che le uso ma mi sono sempre tenuto molto "in superficie" ed ora volevo scendere un pochino più a fondo).
    Naturalmente non vi chiedo il codice già bello che fatto altrimenti che gusto c'è? :P
    A parte gli scherzi non lo farei mai
    Comunque il primo grosso scoglio che non riesco a superare neanche con quei manuali è praticamente l'inizio......come posso fare per far riconoscere al programma quel benedetto puntino rosso? In testa ho una soluzione del tipo:
    codice:
    int i, j; //variabili che utilizzerò nei cicli per "scansionare" pixel per pixel l'immagine
    int max_rosso[2]; //array nel quale salverò riga e colonna relative al pixel più rosso
    for(i=0; i<immagine->height; i++){
         for(j=0; j<immagine->width; j++){
              Se trovi un punto "più rosso" del precedente{
                         max_rosso[0] = i; //altezza
                         max_rosso[1] = j; //larghezza
              }
         }
    }
    Ora, come traduco quel "Se trovi un punto "più rosso" del precedente" in C?

    Per ora la mia domanda è questa..spero che qualche buon anima di voi mi aiuti e la ringrazio in anticipo, ciao!!

  10. #10
    Ops ragazzi scusate ho fatto casino -.- volevo aprire una nuova discussione in realtà :P comunque non ho i permessi per cancellare quel mess, help please

    scusate ancora

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.