1Danke
ERLEDIGT
JA
JA
ANTWORTEN
2
2
ZUGRIFFE
543
543
EMPFEHLEN
-
10.10.11 17:24 #1
- Registriert seit
- Oct 2011
- Beiträge
- 31
Hi,
ich hab mal wieder eine Frage. Ich möchte gerne ein Programm schreiben, dass ein Bild lädt und links oben ein kleines Quadrat "über das Bild zeichnet", dass die Farbe des Pixels annimmt, auf dem gerade die Maus ist ("Pixellupe"). Ich habe bereits alles programmiert, nur weiss ich nicht, wie das Kästchen die Farbe des aktuell "mit der Maus berührten" Pixels annimmt. Und das ist mein Code:
Code :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
#include <opencv2/opencv.hpp> using namespace cv; #include <iostream> using namespace std; int mouseX=0; int mouseY=0; void mouseHandler(int event,int x,int y, int flags, void*param){ mouseY=y; mouseX=x; } int main(){ Mat bild=imread("C:/Users/Public/Pictures/Sample Pictures/Tulips.jpg"); namedWindow("img"); IplImage* img = cvLoadImage("C:/Users/Public/Pictures/Sample Pictures/Tulips.jpg", 1); Rect lupe(0, 0, 10, 10); Mat imgMat(img); setMouseCallback("img", mouseHandler); while(-1==waitKey(1)){ cout<<mouseX<<" " <<mouseY<<endl; Vec3b pixel=imgMat.at<Vec3b>(mouseY,mouseX); int red = pixel[2]; int green = pixel[1]; int blue = pixel[0]; cout<<"r0t: "<<red<<" "<<"Gruen: "<<green<<" "<<"blau: "<<blue<<endl; IplImage* img2 = new IplImage(imgMat); cvSetImageROI(img2,lupe); cvAddS(img2, cvScalar(blue,green,red),img2); cvResetImageROI(img2); Mat imgMat2(img2); imshow("img",imgMat2); } return 0; }
Würde mich freuen wenn mir einer von Euch helfen kann!
-
Hallo,
also dafür gibt es sicher viele Herangehensweisen. Der manuelle Weg ist, einfach die gewünschten Pixel in einer verschachtelten Schleife einzufärben.
Einfaches Beispiel: 25x25px Quadrat oben links färben
Code :1 2 3 4 5 6 7 8 9
for(int i = 0; i < 25; i++ ) { for(int j = 0; j < 25; j++ ) { img2->imageDate[i * img2->widthStep + j + 0] = B; img2->imageDate[i * img2->widthStep + j + 1] = G; img2->imageDate[i * img2->widthStep + j + 2] = R; } }
Alternativ kannst du mal gucken, ob dir die Funktion cvRectangle() hilft.
Viel Erfolg
derPfaff
-
11.10.11 18:43 #3
- Registriert seit
- Oct 2011
- Beiträge
- 31
Vielen Dank!
Ähnliche Themen
-
OpenCV Convertieren eines Graustufenbild in ein RGB-Bild!
Von eka_automation im Forum C/C++Antworten: 1Letzter Beitrag: 14.10.11, 14:12 -
opencv: cvtColor
Von asdasfsdfdsf im Forum C/C++Antworten: 26Letzter Beitrag: 09.10.11, 23:13 -
MFC und OpenCV
Von Nukleo im Forum VisualStudio & MFCAntworten: 3Letzter Beitrag: 24.11.10, 15:22 -
OpenCV Speicherüberlauf
Von bertonex19 im Forum C/C++Antworten: 1Letzter Beitrag: 18.11.10, 11:36 -
Bild von Netzwerkkamera Axis206 / OpenCV + Eclipse
Von Tiger2009 im Forum C/C++Antworten: 3Letzter Beitrag: 18.11.09, 11:46





Zitieren
Login






