asdasfsdfdsf
Mitglied
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:
Würde mich freuen wenn mir einer von Euch helfen kann!
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:
#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!