koslibpro Δημοσ. 13 Αυγούστου 2011 Δημοσ. 13 Αυγούστου 2011 καλημερες, ειμαι νεος σχετικα στον προγραμματισμο με C.θελω να φτιαξω κυριως για εξασκηση ενα προγραμματακι που να εχει καποιες σταθερες(POINTA,POINTB,POINTC,POINTD) να ειναι ισες με FALSE και οταν γινονται TRUE να βγαζει μυνημα αντιστοιχο που μμ ας πυμε να με ειδοποιει.. ο κωδικας ειναι ο ακολουθος: > #include<stdio.h> #include<stdlib.h> /**Adding the STABLES**/ #define false 0 #define true 1 #define or || /**Adding the variables**/ int i; int POINTA,POINTB,POINTC,POINTD; /** Starting the main application**/ int main(void){ POINTA==0; POINTB==0; POINTC==0; POINTD==0; printf("\n\ttraining programm"); printf("\n\t===================="); /**Arxh ths epanalhpshs.To programma 8a ektelestei mexri to i na ginei iso me thn orismenh timh**/ for(i=1;i<5;i++); {//for is starting if(POINTA==1|| POINTB==1 || POINTC==1 || POINTD==1){ printf("\nsomething changed"); system("pause"); } else { printf("\nEverythng is the same"); } }//ends for system("PAUSE"); return 0; }//end of the programm Στο compiling ομως μου βγαζει τα εξης errors: home@ubuntu-laptop:~/Desktop$ gcc main.c main.c: In function ‘main’: main.c:30:8: error: expected ‘(’ before ‘{’ token home@ubuntu-laptop:~/Desktop$ οποτε εμενα οι αποριες μου ειναι:δεν καταλαβαινω καν τι θελει να με πει αυτο και πως να ο αντιμετωπισω>expected ‘(’ before ‘{’ token καθε απαντηση καλοδεχουμενη,καλο απογευμα ενταξει παιδια,το βρηκα το προβλημα και το διορθωσα
nilosgr Δημοσ. 13 Αυγούστου 2011 Δημοσ. 13 Αυγούστου 2011 Διορθωνω κι εξηγω: > #include<stdio.h> #include<stdlib.h> /**Adding the STABLES**/ #define false 0 #define true 1 // #define or || /* γιατι? τι κακο εχει το ||? /**Adding the variables**/ // γιατι globals? int i; int POINTA,POINTB,POINTC,POINTD; /** Starting the main application**/ int main(void){ int i, POINTA, POINTB, POINTC, POINTD; /* διπλο ισων ( == ) βαζουμε για να συγκρινουμε POINTA==0; POINTB==0; POINTC==0; POINTD==0; */ // μαλλον ηθελες κατι τετοιο POINTA = POINTB = POINTC = POINTD = 0; printf("\n\ttraining programm"); printf("\n\t===================="); /**Arxh ths epanalhpshs.To programma 8a ektelestei mexri to i na ginei iso me thn orismenh timh**/ /* απο εδω και κατω δεν καταλαβαινω τι θες να κανεις αν θες πες μου να σε βοηθησω... */ for(i=1;i<5;i++) { if(POINTA==1|| POINTB==1 || POINTC==1 || POINTD==1){ printf("\nsomething changed"); } else { printf("\nEverythng is the same"); } }//ends for system("PAUSE"); //καλυτερα εδω, να μην βαζεις "pause" μεσα σε επαναληψεις return 0; }//end of the programm
koslibpro Δημοσ. 13 Αυγούστου 2011 Μέλος Δημοσ. 13 Αυγούστου 2011 δικιο εχεις φιλε μου,δεν το εξηγησα οπως επρεπε.. που λες τα POINTs υπεθεσα πως θα ειναι παγιδες σε συστημα συναγερμου.Οποτε οταν καποιο radar εδειχνε οτι δεν ηταν FALSE,δηλαδη αναβσε η οπως αλλιως θελεις πες το,θα εδειχνε ενα μυνημα ας πουμε που θα με ειδοποιουσε οτι κατι αλλαζε.Θα μου πεις αφου ρε δεν εχεις καμια εισοδο,πως περιμενεις να αλλαξει το FALSE να γινει TRUE,χωρις τιποτα να το επηρεαζει? οντως,αυτο το τμημα του κωδικα ομως αντιστοιχει σε ενα main.c αρχειο ενω η λειτουργια του "συναγερμου" καθοριζεται απο ενα function.c αρχειο,οπου και αλλαζει η μεταβλητη POINTταδε απο FALSE σε ΤΡUE. εδω>> > /* διπλο ισων ( == ) βαζουμε για να συγκρινουμε POINTA==0; POINTB==0; POINTC==0; POINTD==0; */ // μαλλον ηθελες κατι τετοιο POINTA = POINTB = POINTC = POINTD = 0; δικιο εχεις,συμφωνω απολυτα με την προταση σου. κατι τελευταιο,μου ηρθε η ιδεα τωρα που ταξιδευα νασυνδεσω το προγραμματακι μου αυτο με μια καμερα,και οταν κατι κινειται μεσα στην καμερα,τοτε επισης να βγαζει alert. γινεται αυτο?ειναι δυσκολο?εχεις κατι υποψιν σου..? ευχαριστω ειλικρινα πολυ!
nilosgr Δημοσ. 14 Αυγούστου 2011 Δημοσ. 14 Αυγούστου 2011 κατι τελευταιο,μου ηρθε η ιδεα τωρα που ταξιδευα νασυνδεσω το προγραμματακι μου αυτο με μια καμερα,και οταν κατι κινειται μεσα στην καμερα,τοτε επισης να βγαζει alert. γινεται αυτο?ειναι δυσκολο?εχεις κατι υποψιν σου..? ευχαριστω ειλικρινα πολυ! Γινετε, πχ μπορεις να περνεις ενα screenshot καθε 30 δευτερολεπτα και να το συγκρινεις με το προηγομενο. Βεβαια αυτο ειναι ενα πολυ καλο προγραμμα. Check it
koslibpro Δημοσ. 14 Αυγούστου 2011 Μέλος Δημοσ. 14 Αυγούστου 2011 οντως,του εριξα μια ματια,δεν αντιλεγω ειναι πολυ καλο,φαινεται..απλα θα ηθελα για εκπαιδευτικους σκοπους,να το φτιαξω εγω,εστω και ας μην ειναι ποιοτικο...
poscaman Δημοσ. 14 Αυγούστου 2011 Δημοσ. 14 Αυγούστου 2011 δικιο εχεις φιλε μου,δεν το εξηγησα οπως επρεπε.. που λες τα POINTs υπεθεσα πως θα ειναι παγιδες σε συστημα συναγερμου.Οποτε οταν καποιο radar εδειχνε οτι δεν ηταν FALSE,δηλαδη αναβσε η οπως αλλιως θελεις πες το,θα εδειχνε ενα μυνημα ας πουμε που θα με ειδοποιουσε οτι κατι αλλαζε.Θα μου πεις αφου ρε δεν εχεις καμια εισοδο,πως περιμενεις να αλλαξει το FALSE να γινει TRUE,χωρις τιποτα να το επηρεαζει? οντως,αυτο το τμημα του κωδικα ομως αντιστοιχει σε ενα main.c αρχειο ενω η λειτουργια του "συναγερμου" καθοριζεται απο ενα function.c αρχειο,οπου και αλλαζει η μεταβλητη POINTταδε απο FALSE σε ΤΡUE. εδω>> > /* διπλο ισων ( == ) βαζουμε για να συγκρινουμε POINTA==0; POINTB==0; POINTC==0; POINTD==0; */ // μαλλον ηθελες κατι τετοιο POINTA = POINTB = POINTC = POINTD = 0; δικιο εχεις,συμφωνω απολυτα με την προταση σου. κατι τελευταιο,μου ηρθε η ιδεα τωρα που ταξιδευα νασυνδεσω το προγραμματακι μου αυτο με μια καμερα,και οταν κατι κινειται μεσα στην καμερα,τοτε επισης να βγαζει alert. γινεται αυτο?ειναι δυσκολο?εχεις κατι υποψιν σου..? ευχαριστω ειλικρινα πολυ! Με την C που γνωρίζεις, αυτό που θέλεις να κάνεις είναι αδύνατο. Ξεκίνα απο ΠΟΛΥ μικρότερα projects, για να αποκτήσεις εμπειρία πάνω στη γλώσσα, και μετά σιγά-σιγά αυξάνεις το μέγεθος και την δυσκολία το projects...
koslibpro Δημοσ. 15 Αυγούστου 2011 Μέλος Δημοσ. 15 Αυγούστου 2011 σωστα,νομιζω poscaman πως εχεις δικιο..απλα μου αρεσε ως ιδεα,κολησα και γιαυτο ηθελα και να την υλοποιησω.. εχεις κατα νου αλλα μικροτερα projects να μου προτινεις..?απο τοτε πχ π αρχισες εσυ να μαθαινεις προγραμματισμο σε C..
Timonkaipumpa Δημοσ. 15 Αυγούστου 2011 Δημοσ. 15 Αυγούστου 2011 σωστα,νομιζω poscaman πως εχεις δικιο..απλα μου αρεσε ως ιδεα,κολησα και γιαυτο ηθελα και να την υλοποιησω.. εχεις κατα νου αλλα μικροτερα projects να μου προτινεις..?απο τοτε πχ π αρχισες εσυ να μαθαινεις προγραμματισμο σε C.. Αυτό που ζητάς να κάνεις, μπορείς να το κάνεις απλά με το Processing. Είναι ένα ελεύθερο "περιβάλλον" που χρησιμοποιεί μία γλώσσα "παραλλαγή" της Java. Δεν είναι τίποτα δύσκολο και μέσα από αυτό μπορείς να μάθεις αρκετά για προγραμματισμό. Έχει αρκετές βιβλιοθήκες που κάνουν αρκετά "eye candy" πράγματα. Αυτό με την αυτόματη αναγνώριση κίνησης, νομίζω πως είναι ήδη υλοποιημένο σε κάποια βιβλιοθήκη του. Δες το.
adamco Δημοσ. 17 Αυγούστου 2011 Δημοσ. 17 Αυγούστου 2011 οντως,του εριξα μια ματια,δεν αντιλεγω ειναι πολυ καλο,φαινεται..απλα θα ηθελα για εκπαιδευτικους σκοπους,να το φτιαξω εγω,εστω και ας μην ειναι ποιοτικο... Πολύ καλή η ιδέα του nilosgr!!!! Θα μετατρέπεις τα screenshots της στιγμής ta και της στιγμής tp σε αρχεία κειμένου αναλύοντας όλα τα pixels τους (δηλ. το χρώμα κάθε pixel p(x,y) = κωδικός χρώματος). Αν Scr(ta) <> Scr(tp) υπάρχει κίνηση στην οθόνη.... μπορείς να υπολογίζεις και πόσα pixels είναι διαφορετικά έτσι ώστε να καταλάβεις και το μέγεθος του αντικειμένου.
parsifal Δημοσ. 17 Αυγούστου 2011 Δημοσ. 17 Αυγούστου 2011 Αν Scr(ta) <> Scr(tp) υπάρχει κίνηση στην οθόνη.... ...ή θόρυβος από τον Mr. Camera!
koslibpro Δημοσ. 17 Αυγούστου 2011 Μέλος Δημοσ. 17 Αυγούστου 2011 ...ή θόρυβος από τον Mr. Camera! πως ομως μπορεις να ελεγχεις τον θορυβο της οθονης..?λογικα με τον ιδιο τροπο που ελεγεχεις το scr(ta)<>scr(tp).Ή οχι ετσι..? Πολύ καλή η ιδέα του nilosgr!!!! Θα μετατρέπεις τα screenshots της στιγμής ta και της στιγμής tp σε αρχεία κειμένου αναλύοντας όλα τα pixels τους (δηλ. το χρώμα κάθε pixel p(x,y) = κωδικός χρώματος). Αν Scr(ta) <> Scr(tp) υπάρχει κίνηση στην οθόνη.... μπορείς να υπολογίζεις και πόσα pixels είναι διαφορετικά έτσι ώστε να καταλάβεις και το μέγεθος του αντικειμένου. Μπορεις να με βοηθησεις λιγο περισσοτερο με αυτο..?
adamco Δημοσ. 17 Αυγούστου 2011 Δημοσ. 17 Αυγούστου 2011 πως ομως μπορεις να ελεγχεις τον θορυβο της οθονης..?λογικα με τον ιδιο τροπο που ελεγεχεις το scr(ta)<>scr(tp).Ή οχι ετσι..? Ο θόρυβος της οθόνης λογικά έχει μικρές διακυμάνσεις ως προς μια μέση τιμή. Μελέτησε διάφορα screenshots χωρίς κίνηση για να δεις πόσα pixels είναι η διαφορά τους. Όταν θα περάσει από το πεδίο της κάμερας κάποιο αντικείμενο η διακύμανση θα είναι πολύ μεγαλύτερη.
παπι Δημοσ. 17 Αυγούστου 2011 Δημοσ. 17 Αυγούστου 2011 Τα βηματα ειναι καπος ετσι: Παιρνεις ενα κομματι βιντεο -> παιρνεις ενα frame ανα χ -> αποσυμπιεζεις το frame -> τωρα εχεις ενα raw image δηλαδη ενα array που ειναι ετσι color color color color color stride color color color color color stride ... αυτο θα το μετατρεψεις σε 2d array αναλογα το stride τελος θα ψαξεις διαφορους αλγοριθμους επεξεργασιας εικονας και θα κανεις την δουλεια σου. Για να το κανεις αυτο σε C θελεις: Ενα sdk για αποσυμπιεση εικονας πχ http://www.ijg.org/ Ενα sdk για να παιρνεις το stream απο τη καμερα πχ DirectX show για ολες της καμερες ή το εκαστοτε sdk της καμερας
Timonkaipumpa Δημοσ. 18 Αυγούστου 2011 Δημοσ. 18 Αυγούστου 2011 τελος θα ψαξεις διαφορους αλγοριθμους επεξεργασιας εικονας και θα κανεις την δουλεια σου. Για να το κανεις αυτο σε C θελεις: Ενα sdk για αποσυμπιεση εικονας πχ http://www.ijg.org/ Ενα sdk για να παιρνεις το stream απο τη καμερα πχ DirectX show για ολες της καμερες ή το εκαστοτε sdk της καμερας + Αλγόριθμο εύρεσης απόστασης ( οποίος θα δέχεται σαν είσοδο επεξεργασμένη "εικόνα" - πίνακα, συνήθως μέσω PCA) Αλγόριθμο κατηγοριοποίησης.
adamco Δημοσ. 18 Αυγούστου 2011 Δημοσ. 18 Αυγούστου 2011 Μπορεις να με βοηθησεις λιγο περισσοτερο με αυτο..? Δεν έχω ασχοληθεί ποτέ με αυτό το πρόβλημα αλλά έχω ένα πρόγραμμα για αντιγραφή της οθόνης. > $INCLUDE "RAPIDQ.INC" DECLARE FUNCTION Setfocus Lib "user32" Alias "SetFocus"(hwnd As Long) AS LONG DECLARE FUNCTION GetActiveWindow Lib "user32" ALIAS "GetActiveWindow"() As Long DECLARE FUNCTION GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, _ ByVal lpString As String, ByVal cch As Long) As Long DECLARE FUNCTION GetWindowDC LIB "user32" ALIAS "GetWindowDC"_ (hWnd AS LONG) AS LONG DECLARE FUNCTION BitBlt LIB "gdi32" ALIAS "BitBlt" _ (hDC AS LONG, nXDest AS LONG, nYDest AS LONG, _ nWidth AS LONG, nHeight AS LONG, hDCSrc AS LONG, _ nXSrc AS LONG, nYSrc AS LONG, dwRop AS LONG) AS LONG DECLARE FUNCTION ReleaseDC LIB "user32" ALIAS "ReleaseDC"_ (hWnd AS LONG, hDC AS LONG) AS LONG DECLARE SUB Copy_btn_click (Sender AS QBUTTON) CONST SRCCOPY = &HCC0020 DIM hWnd as LONG DIM DC AS LONG DIM Bitmap AS QBITMAP DIM SaveFile AS STRING DIM i AS INTEGER, j AS INTEGER DIM CaptureFile AS STRING CaptureFile = "Capture01.bmp" DIM backcolor AS LONG backcolor = &HFFFFFF CREATE Form AS QFORM Caption = "Rapid-Q, Screen Capture Program" Left = 0 Top = 0 Width = 320 Height = 120 Color = backcolor WindowState = 0 BorderStyle = 1 delBorderIcons(2) CREATE Image1 AS QIMAGE Left = 0 Top = 0 Width = 30 Height = 30 Visible = 0 END CREATE CREATE Label1 AS QLABEL Caption = "Save screen as :" Left = 10 Top = 16 Width = 80 Height = 30 END CREATE CREATE Edit1 AS QEDIT Text = CURDIR$+"\" Left = 95 Top = 16 Width = 200 Height = 30 END CREATE CREATE Button1 AS QBUTTON Caption = "Ok" Left = 10 Top = 48 OnClick = Copy_btn_click END CREATE END CREATE Edit1.text = Edit1.Text + CaptureFile SetFocus(Button1.Handle) Form.ShowModal SUB Copy_btn_click (Sender AS QBUTTON) Button1.Visible = 0 Label1.Visible = 0 Edit1.Visible = 0 Form.Visible = 0 For i = Form.Left to Form.Left + Form.ClientWidth For j = Form.Top to Form.Top + Form.ClientHeight Next Next hWnd = GetDesktopWindow() DC = GetWindowDC(hWnd) Bitmap.Width = Screen.Width Bitmap.Height = Screen.Height BitBlt(Bitmap.Handle, 0, 0, Bitmap.Width, Bitmap.Height, DC, 0, 0, SRCCOPY) ReleaseDC(hWnd, DC) SaveFile = Edit1.Text bitmap.SaveToFile(SaveFile) Image1.Autosize=1 Image1.Visible=1 Image1.BMP= Edit1.text Form.Caption = "Bitmap file, " + Edit1.text Form.BorderStyle = 2 Form.Visible=1 END SUB Κάπως έτσι αντιγράφεις την εικόνα > SUB Copy_Click for i=Image1.left to Image1.left+Image1.Width for j=Image1.top to Image1.top+Image1.Height if j<Image1.top+Image1.Height and i<Image1.left+Image1.Width then z%=doevents() Richedit1.addstrings "p(" +str$(cnt_line)+ ")=" +chr$(34)+str$(Form.Pixel(i,j))+chr$(34) p(cnt_line)=str$(Form.Pixel(i,j)) cnt_line = cnt_line+1 Form.Pixel(i,j) = &HFFFFFF end if next next END SUB και έτσι θα κάνεις redraw > SUB Redraw k=0 for i=Image1.left to Image1.left+Image1.Width-1 for j=Image1.top to Image1.top+Image1.Height-1 Form.Pixel(i,j) = val(p(k)) k=k+1 next next END SUB
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.