наконец-то я нашел способ обнаружить буквы в майских карточках для распознавания букв в карточках я использую моменты Ху что-то вроде соответствия формы, но это более точно https://www.learnopencv.com/shape-matching-using-hu-moments-c-python/ ниже код повторить двойной, который отличается между двумя изображениями поэтому я использую другое и сравниваю его с другим изображением, а затем распознаю букву на изображении.
double HuMatchingShape(double* secondMoments,double* firstMoments)
{
double dif = 0;
int counter = 0;
for (int i = 0; i < 7; i++)
{
dif += (firstMoments[i] - secondMoments[i]) * (firstMoments[i] -secondMoments[i]);
}
return sqrt(dif);
}
double* getHuMoments(Mat img)
{
Moments moments = cv::moments(img,true);
// Calculate Hu Moments
double * huMoments = new double[7];
HuMoments(moments, huMoments);
for (int i = 0; i < 7; i++)
{
huMoments[i] = -1 * copysign(1.0, huMoments[i]) * log10(abs(huMoments[i]));
}
return huMoments;
}
int main()
{
Mat image1 = imread("image path");
Mat image2 = imread("second image path");
// make these two images binary
image1 = makeItBinay(image1);
image2 = makeItBinay(image2);
// calculate different between two image with hu moments
double different = HuMatchingShape(getHuMoments(image1), getHuMoments(image2));
return 0;
}