Files
kepfeldolgozas/ora3/main3.cpp
2025-10-02 16:00:02 +02:00

65 lines
1.6 KiB
C++

#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>
#include <iostream>
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<Mat> 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<Vec3f>(0,0);
Vec3f c2 = lab.at<Vec3f>(0,1);
std::cout<< c1 << " " << c2 << std::endl;
std::cout << "tavolsag: " << norm(c2-c1) << std::endl;
Vec3f c3 = lab.at<Vec3f>(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;
}