65 lines
1.6 KiB
C++
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;
|
||
|
|
}
|