opencv: cvtColor

asdasfsdfdsf

Mitglied
Hallo,
ich brauche dringend hilfe. ich möchte ein bild laden und dann den farbraum von RGB nach HSV wechseln. dafür versuche ich die methode cvtColor() zu verwenden. Wenn das mal geschafft ist möchte ich gerne mit slidern die helligkeit und die sättigung steuern. hier mein code:
C++:
#include <iostream> 
#include <opencv2/opencv.hpp> 
using namespace cv; 
using namespace std;

int main( int argc, char** argv ) 
{ 
	// leeres Image erzeugen 
	Mat img(240,320,CV_8UC3); 
	// Bild laden 
	img = imread("C:\\Users\\Public\\Pictures\\Sample Pictures\\Tulips.jpg"); 
	Mat img2(240,320,CV_8UC3); 
	cvtColor(img, img2, CV_BGR2HSV ); //<-here i wanted to change the color

	namedWindow("img");
	namedWindow("helleresBild");
	createTrackbar("trackbar_name", "helleresBild", 0, 255);
	int pos=0;
	while (true){ 
		pos = getTrackbarPos("trackbar_name", "helleresBild");
		cout<<pos;
		
		Mat helleresBild (img2.rows,img2.cols,CV_8UC3);
		for (int x=0;x<img2.cols;x++){
			for (int y=0;y<img2.rows;y++){
				Vec3b altesPixel=img2.at<Vec3b>(y,x);
				Vec3b offset(pos,pos,pos);
				Vec3b neuesPixel = altesPixel+offset;
				helleresBild.at<Vec3b>(y,x)=neuesPixel;
			}
		} 
		if (waitKey(30) != -1){ 
			break; 
		} 
		imshow("img",img);
		imshow("helleresBild",helleresBild);
	}

	return 0;

	
}
ich bekomme immer den fehler:
aufgabe1.obj : error LNK2019: unresolved external symbol "void __cdecl cv::cvtColor(class cv::_InputArray const &,class cv::_OutputArray const &,int,int)" (?cvtColor@cv@@YAXABV_InputArray@1@ABV_OutputArray@1@HH@Z) referenced in function _main

ich weiss einfach nicht wie ich mit der cvtColor funktion umzugehen habe und die doku hilft leider auch nicht.

es wär super wenn mir hier jemand helfen kann
 
Hi

wahrscheinlich hast du vergessen, beim Linker alle nötigen lib-Dateien einzutragen.

Und bitte in Zukunft die Codetags verwenden (siehe Signatur) und Netiquette 15 beachten.

Gruß
 
hi, danke. welche lib-dateien muss ich denn eintragen (habe:eek:pencv_highgui231d.lib opencv_core231d.lib)^? ich verstehe nicht ganz woher man weiss was man linken muss^^. das mit den codetags und netiquette 15 werde ich in zukunft beachten
 
Wenn du dein eigenes Programm also Debug kompilierst passt das so.
Wenn Release solltest du auch die d-losen libs nehmen.

Und ja, mit der richtigen lib sollte es gehen.
Wenns nicht zu viel verschiedene gibt, einfach mal durchprobieren.
 
So, ich glaube ich habe die korrekte .lib gefunden: opencv_imgproc231(danke! gute idee).Aber wenn ich jetzt debugge bekomme ich einen Systemfehler: "Das Programm kann nicht gestartet werden, da tbb_debug.dll auf dem Computer fehlt. Installieren Sie das Programm erneut, um das Problem zu beheben"

Die Frage ist nur ob ich jetzt wirklich opencv neu installieren soll oder was der M*** soll :)
 
Such mal mit der Dateisuchfunktion vom Betriebssystem nach dieser dll.
Ob die irgendwo auf deinem Computer vorhanden ist.
 
So, hab mich wieder etwas schlauer gemacht:
Die Release-Version tbb.dll ist bei OpenCV dabei,
aber aus irgendeinem Grund nicht die Debug-Version.

Also entweder verzichtest du auf Debug
und kompilerst alles als Release (auch das d bei den libs weg!)

oder besorgst dir die dll hier.
Die Version müsstest du bei der Debug-Variante nachschauen.
 
Zurück