#include #include #include #include using namespace cv; void convert(const Mat img, Mat& lab){ Mat imgf; img.convertTo(imgf, CV_32FC3, 1/255.0); //tipus converzio rgb 0-1 tartomany cvtColor(imgf, lab, COLOR_BGR2Lab); } double avg_diff(const Mat lab1, const Mat lab2){ Mat diff = lab1 - lab2; Mat diff2 = diff.mul(diff); //1 kep 3 csatornara: dL^2 dA^2 dB^2 ezeket kellene osszeadni std::vector chs; split(diff2, chs); //3 kep 1 csatorna Mat E; cv::sqrt(chs[0] + chs[1] + chs[2], E); return mean(E)[0]; //mivel osszeadtuk a skalarbol kivesszuk az elso erteket mert csak az a lenyeg } std::string get_category(double diff){} int main(){ Mat etalon = imread("padlolapok/etalon.png", IMREAD_COLOR); Mat elab; convert(etalon, elab); imshow("img", etalon); moveWindow("img", 0,0); /*Vec3f c1 = lab.at(0,0); Vec3f c2 = lab.at(0,1); std::cout<< c1 << " " << c2 << std::endl; std::cout << "tavolsag: " << norm(c2-c1) << std::endl; Vec3f c3 = lab.at(lab.rows-1, lab.cols-1); std::cout<< "tavolsag: " << norm(c3-c1) << std::endl;*/ for(int i = 1; i < 7; i++){ Mat img = imread("padlolapok/fa_" + std::to_string(i) + ".png", IMREAD_COLOR); Mat lab; convert(img, lab); std::string name = "img" + std::to_string(i); imshow(name, img); moveWindow(name, 400, i*(img.rows+30)); std::cout << i << " " << avg_diff(elab, lab) << std::endl; } waitKey(); return 0; }