Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht Das deutsche QBasic- und FreeBASIC-Forum
Für euch erreichbar unter qb-forum.de, fb-forum.de und freebasic-forum.de!
 
FAQFAQ   SuchenSuchen   MitgliederlisteMitgliederliste   BenutzergruppenBenutzergruppen  RegistrierenRegistrieren
ProfilProfil   Einloggen, um private Nachrichten zu lesenEinloggen, um private Nachrichten zu lesen   LoginLogin
Zur Begleitseite des Forums / Chat / Impressum
Aktueller Forenpartner:

Bildpuffer
Gehe zu Seite 1, 2  Weiter
 
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC.
Vorheriges Thema anzeigen :: Nächstes Thema anzeigen  
Autor Nachricht
Andy19312



Anmeldungsdatum: 22.10.2005
Beiträge: 428

BeitragVerfasst am: 14.07.2009, 15:24    Titel: Bildpuffer Antworten mit Zitat

hallo zusammen,
ich wollte folgendes Fragen:
Wenn ich z.B. Linien zeichne, mit line, oder Bildpunkte setze mit pset, wird es irgendwo in einem Puffer gespeichert?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Andy19312



Anmeldungsdatum: 22.10.2005
Beiträge: 428

BeitragVerfasst am: 14.07.2009, 15:43    Titel: Antworten mit Zitat

Oder wenn ich z.B. eine png Grafik oder eine jpeg Grafik lade, hängen die Daten dann auch irgendwo im Puffer.
Wie sieht dieser Puffer aus?
Liegt es z.B. so vor?
x1,y1 = RGB Wert
x2,y1 = RGB Wert usw.

für z.B. eine 200*200 Pixel Grafik.

Mit ImageDestroy zerstört man ja diesen Puffer wieder
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
The_Muh
aka Mark Aroni


Anmeldungsdatum: 11.09.2006
Beiträge: 718

BeitragVerfasst am: 14.07.2009, 15:44    Titel: Antworten mit Zitat

Jain. Du kannst zumindest Teile der GFX-ausgabe (aber auch die gesamte) mit GET in ne Variable packen, und manuell Puffern. Siehe dazu:
imagecreate
get

Und wenn du es kompliziert magst:

screenptr
(Damit kannst du auf den Framebuffer der Aktiven GFX-Seite zugreifen. Allerdings hab ich damit noch nicht geproggt und kenn mich dahingehend also nicht aus.

Mfg
The_Muh

/Edit:
Andy19312 hat Folgendes geschrieben:
Oder wenn ich z.B. eine png Grafik oder eine jpeg Grafik lade, hängen die Daten dann auch irgendwo im Puffer.
Wie sieht dieser Puffer aus?
Liegt es z.B. so vor?
x1,y1 = RGB Wert
x2,y1 = RGB Wert usw.

Nein, Das würde bei größeren Bildmaßen eindeutig den Ram sprengen. Genaueres kann dir Google sagen, oder öffne doch mal ne BMP-datei (oder nen anderes grafik-format) mit nem Texteditor. Allerdings gibt es ein Format das so gehandhabt wird: -> SVG

P.S.: Wenn du ne grafik pixel für pixel editieren willst, nutz doch einfach PSET
_________________
// nicht mehr aktiv //
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Andy19312



Anmeldungsdatum: 22.10.2005
Beiträge: 428

BeitragVerfasst am: 14.07.2009, 16:04    Titel: Antworten mit Zitat

dim Zielpuffer(1) as integer
GET (1, 1)-(1, 1), ZielPuffer(1)
print Zielpuffer(1)

leider bekomme ich mit print Zielpuffer(1) überhautp nix angezeigt
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Löwenherz



Anmeldungsdatum: 25.08.2008
Beiträge: 86
Wohnort: auf einer sonnigen Insel :)

BeitragVerfasst am: 14.07.2009, 16:32    Titel: Antworten mit Zitat

hi andy,

ich bekomme bei meinem simplen Beispiel "7" heraus...

Code:
screen 14,32

dim Zielpuffer(1) as integer
GET (0, 0)-(1, 1), ZielPuffer(1)
print Zielpuffer(1)
sleep 50
getkey


hat also geklappt... was läuft bei dir nicht richtig ?

liebe grüße, löwenherz
_________________
Das Leben ist wie eine Pralinenschachtel, man weiß nie, was dort drinnen für tolle wie böse Überraschungen stecken
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Andy19312



Anmeldungsdatum: 22.10.2005
Beiträge: 428

BeitragVerfasst am: 14.07.2009, 17:52    Titel: Antworten mit Zitat

#include once "jpeg4fb.bas"
SCREEN 14,32
dim bild(1) as any ptr
dim dateiname as string
DIM Zielpuffer(1) AS INTEGER

dateiname = "c:\city.jpg"
bild(1) = jpegget(dateiname)
Put (0,0),bild(1),Pset
GET bild(1),(1, 1)-(1, 1), ZielPuffer(1)
PRINT Zielpuffer(1)
sleep

ich bekomme immer nur 7 heraus, warum das
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
The_Muh
aka Mark Aroni


Anmeldungsdatum: 11.09.2006
Beiträge: 718

BeitragVerfasst am: 14.07.2009, 17:57    Titel: Antworten mit Zitat

Vielleicht solltest du mal PUT probieren ?!?! peinlich
_________________
// nicht mehr aktiv //
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Löwenherz



Anmeldungsdatum: 25.08.2008
Beiträge: 86
Wohnort: auf einer sonnigen Insel :)

BeitragVerfasst am: 14.07.2009, 20:21    Titel: Antworten mit Zitat

hi andy, kleiner Versuch, probier nur mal, ob das bei dir klappt lächeln

Code:
#include "jpeg4fb.bas"

Screen 19, 32

Dim As Any Ptr image = jpegget("city.jpg")
If jpegerr Then Print printerror : Sleep : End

Put (5, 5), image, Pset

If image <> 0 Then Imagedestroy image
Sleep


jpeg2screen( "city.jpg" )
If jpegerr Then Print printerror

'Put (15, 15), image, Pset

sleep


bei mir ist das völlig ok lächeln

grüße, löwenherz
_________________
Das Leben ist wie eine Pralinenschachtel, man weiß nie, was dort drinnen für tolle wie böse Überraschungen stecken
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Andy19312



Anmeldungsdatum: 22.10.2005
Beiträge: 428

BeitragVerfasst am: 14.07.2009, 20:29    Titel: Antworten mit Zitat

Erstmal danke an euch, das ihr mir probiert zu helfen, aber ich glaube ihr versteht mich falsch.

Was ich machen will "ich versuch es nochmal zu erklären", ist folgendes:

Grafik erstmal auf das Display bringen:

#include once "jpeg4fb.bas"
SCREEN 14,32
dim bild(1) as any ptr
dim dateiname as string
DIM Zielpuffer(1) AS uinteger

dateiname = "c:\city.jpg"
bild(1) = jpegget(dateiname)
Put (0,0),bild(1),Pset
sleep

anschliessend will ich, dass ich z.B. vom Pixel 1,
also bei x1 und y1 den RGB herausfinde.

Diese ganzen RGB Werte des kompletten Bildes benötige ich, da ich eine Überwachungskamera zwar schon am laufen habe, aber ich noch nicht auf
Ereignisse reagieren kann.

Ereignisse: Jemand läuft durchs Bild, Licht geht an usw.
Bei solch einem Ereignis, sollte das Programm drauf reagieren und dann Alarm auslösen.

Daher benötige ich von jedem Pixel des Bildes ein RGB Wert, so dass ich bei einer Abweichung um einen gewissen Prozentsatz im gesamten Bild drauf reagieren kann

EDIT: Ich bekomme es jedenfalls mit get und put nicht hin, sorry.

cu Andy
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
The_Muh
aka Mark Aroni


Anmeldungsdatum: 11.09.2006
Beiträge: 718

BeitragVerfasst am: 14.07.2009, 21:11    Titel: Antworten mit Zitat

Warum sagst du das nicht gleich?

POINT sollte dir helfen, wird aber recht langsam sein, wenn du damit nen komplettes bild abtastest.
_________________
// nicht mehr aktiv //
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Andy19312



Anmeldungsdatum: 22.10.2005
Beiträge: 428

BeitragVerfasst am: 14.07.2009, 22:46    Titel: Antworten mit Zitat

Code:

#include once "jpeg4fb.bas"
SCREEN 14,32
dim bild(1) as any ptr
dim dateiname as string
DIM Zielpuffer(1) AS uinteger
dim a as uinteger
dateiname = "c:\city.jpg"
bild(1) = jpegget(dateiname)
Put (0,0),bild(1),Pset
a = POINT(80, 2 )
print a
sleep


Wenn ich das aufrufe, dann habe ich 10 Zeichen mit einem Wert.
Wie weiss ich jetzt aber, den RGB Wert?
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Muttonhead



Anmeldungsdatum: 26.08.2008
Beiträge: 565
Wohnort: Jüterbog

BeitragVerfasst am: 14.07.2009, 22:55    Titel: Antworten mit Zitat

http://forum.qbasic.at/viewtopic.php?t=4274&highlight=rgb
hat mir mal sehr geholfen, um an die RGB-Werte zu kommen, ins besondere die BitSchieberei(siehe Voltas ersten Post)....
Mutton lächeln
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden E-Mail senden
Andy19312



Anmeldungsdatum: 22.10.2005
Beiträge: 428

BeitragVerfasst am: 14.07.2009, 23:28    Titel: Antworten mit Zitat

Schon läuft die Sache zwinkern

Ich wollte mich noch bei allen, für die Hilfestellung bedanken.

Cu Andy.

Der Code:
Code:

#include once "jpeg4fb.bas"
SCREEN 14,32
dim bild(1) as any ptr
dim dateiname as string
DIM Zielpuffer(1) AS uinteger
dim Farbe as uinteger
dim hexen as string
dim hexena as integer

dim R as integer
dim G as integer
dim B as integer

dim hex1 as string
dim hex2 as string
dim hex3 as string
dateiname = "c:\city.jpg"
bild(1) = jpegget(dateiname)
Put (110,0),bild(1),Pset

Farbe = POINT(130, 40,bild(1))
print "Ausgangswert"
print Farbe
print
R = (Farbe AND &HFF0000) SHR 16
hex1 = hex(R,2)
G = (Farbe AND &H00FF00) SHR 8
hex2 = hex(G,2)
B = (Farbe AND &H0000FF)
hex3 = hex(B,2)

print "RGB Werte"
print
print "rot   =";R
print "gruen =";G
print "blau  =";B
print
print
print "HEX Werte"
print
print "rot   =";hex1
print "gruen =";hex2
print "blau  =";hex3

hexen = "&h"+hex1+hex2+hex3

hexena = val(hexen)
COLOR hexena, &h000000
print
locate 23,1
print "So sieht die Farbe dann aus ;-)"
sleep
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Andy19312



Anmeldungsdatum: 22.10.2005
Beiträge: 428

BeitragVerfasst am: 15.07.2009, 17:33    Titel: Webcame Antworten mit Zitat

Jetzt stellt sich aber schon die nächste Frage:
Wie kann ich auf die Webcam zugreifen.
Sprich ich will in gewissen Zeitintervallen Bilder von der Webcame holen und als jpg Datei speichern.

Geht das...
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Mao



Anmeldungsdatum: 25.09.2005
Beiträge: 4409
Wohnort: /dev/hda1

BeitragVerfasst am: 15.07.2009, 17:46    Titel: Antworten mit Zitat

Ja, das geht, aber such doch mal, das Thema hatten wir schon einige Male.
_________________
Eine handvoll Glück reicht nie für zwei.
--
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Flo
aka kleiner_hacker


Anmeldungsdatum: 23.06.2006
Beiträge: 1210

BeitragVerfasst am: 16.07.2009, 14:49    Titel: Antworten mit Zitat

Code:

shell "irgendein_tolles_webcam_programm.exe --save-to-file --filename="+dein_dateiname+" --camera=default"

_________________
MFG
Flo

Satoru Iwata: Wer Spaß am Spielen hat, fragt nicht nach Grafik.

zum korrekten Verstaendnis meiner Beitraege ist die regelmaessige Wartung des Ironiedetektors unerlaesslich.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Andy19312



Anmeldungsdatum: 22.10.2005
Beiträge: 428

BeitragVerfasst am: 17.07.2009, 17:52    Titel: Antworten mit Zitat

das funktioniert?
Achso, ich bräuchte echt nur eine kleine Lösung, um ein Bild von der Webcame zu holen.
Welche ich im Forum finde, sind recht kompliziert finde ich
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
Jojo
alter Rang


Anmeldungsdatum: 12.02.2005
Beiträge: 9736
Wohnort: Neben der Festplatte

BeitragVerfasst am: 17.07.2009, 18:27    Titel: Antworten mit Zitat

Zitat:

das funktioniert?

kommt auf deine version von "irgendein_tolles_webcam_programm.exe" an lachen

AFAIK gibt's dafür unter Windows aber sogar ne schnittstelle. google ist dein freund.
_________________
» Die Mathematik wurde geschaffen, um Probleme zu lösen, die es nicht gäbe, wenn die Mathematik nicht erschaffen worden wäre.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
ThePuppetMaster



Anmeldungsdatum: 18.02.2007
Beiträge: 1839
Wohnort: [JN58JR]

BeitragVerfasst am: 17.07.2009, 18:27    Titel: Antworten mit Zitat

Das liegt daran, weil es 1000000000000000000000000 varianten von Webcam's gibt.

Welche mti Netzwerkanschluss, welche als FBAS, welche mti USB, Firewire, ....
Dann können die Cam's auch unterschiedlcihe auflösugnen
haben mikro oder nicht, n lautsprecher, eventuell ne steuerung zum drehen, ..............

Diese ganzen unterschiedlichen funktionen bereit zus tellen ist nicht einfach
darum baut man einen "treiber" der das ganze vereinfacht.

Einen Treiber anzusprechen ist zwar einfacher als alle varianten im programm zu integireren, dafür ist ein treiber meist mit einer allgemein gültigen, udn geregelten schnittstelle ausgestattet, so das das programm, egal welcher treiber für die cam, das ist, immer die selben fuktionen nutzen kann.

der treiber unterstützt allerdings alle funktionen, wie auflösung, usw.

das kann man nun mal nicht "kompackter" machen.

Ein bisschen arbeit solltest du dir schon machen, wenn du Programmieren willst. Nicht für alles gibt es fertige lösugnen, die auf das zugeschnitten sidn, was DU willst / brauchst.

Dinge, die für JEDEN brauchbar sind, sind meist sehr komplex, udn haben viele variationsmöglichkeiten.

Willst du ws "kompacktes" udn einfaches, dann musst du das nunmal selbst (besser) machen.


MfG
TPM
_________________
[ WebFBC ][ OPS ][ ToOFlo ][ Wiemann.TV ]
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden
volta



Anmeldungsdatum: 04.05.2005
Beiträge: 1876
Wohnort: D59192

BeitragVerfasst am: 18.07.2009, 17:42    Titel: Antworten mit Zitat

Hi Andy19312
Evtl. hilft dir dieses hier:
http://www.freebasic-portal.de/index.php?s=code&id=146
_________________
Warnung an Choleriker:
Dieser Beitrag kann Spuren von Ironie & Sarkasmus enthalten.
Zu Risiken & Nebenwirkungen fragen Sie Ihren Therapeuten oder Psychiater.
Nach oben
Benutzer-Profile anzeigen Private Nachricht senden Website dieses Benutzers besuchen
Beiträge der letzten Zeit anzeigen:   
Neues Thema eröffnen   Neue Antwort erstellen    Das deutsche QBasic- und FreeBASIC-Forum Foren-Übersicht -> Allgemeine Fragen zu FreeBASIC. Alle Zeiten sind GMT + 1 Stunde
Gehe zu Seite 1, 2  Weiter
Seite 1 von 2

 
Gehe zu:  
Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst deine Beiträge in diesem Forum nicht bearbeiten.
Du kannst deine Beiträge in diesem Forum nicht löschen.
Du kannst an Umfragen in diesem Forum nicht mitmachen.

 Impressum :: Datenschutz