入门opencv数字识别问题

蒙飞鸿 2021-05-08 06:27:36
最近学习opencv,用了一个网络代码来做魔兽世界时间数字识别测试,结果碰到的问题是都识别为0了。这个网络代码大概是这个流程:
//加载模板
vector<Mat> myTemplate;
for (int i = 0; i < 10; i++)
{
char name[64];
sprintf(name, "E:\\vcs\\number_recognition\\number_recognition\\number_recognition\\image\\%d.jpg", i);
Mat temp = imread(name, 0);
myTemplate.push_back(temp);
}

//按顺序取出和分割数字
vector<Mat> myROI;
for (int i = 0; i < sort_rect.size(); i++)
{
Mat ROI;
ROI = conImage(sort_rect[i].getRect());
Mat dstROI = Mat::zeros(myTemplate[0].size(),myTemplate[0].type());
resize(ROI, dstROI, myTemplate[0].size(), 0, 0, INTER_NEAREST);
myROI.push_back(dstROI);
}

//进行比较,将图片与模板相减,然后求全部像素和,和最小表示越相似,进而完成匹配
vector<int> seq;//顺序存放识别结果
for (int i = 0; i < myROI.size(); i++)
{
Mat subImage;
int sum = 0;
int min = 100000;
int min_seq = 0;//记录最小的和对应的数字
for (int j = 0; j < 10; j++)
{
//计算两个图片的差值
absdiff(myROI[i], myTemplate[j], subImage);
sum = getPiexSum(subImage);
if (sum < min)
{
min = sum;
min_seq = j;
}
sum = 0;
}
seq.push_back(min_seq);
}

实际运行时两个图片的差值都是大于100000,所以几个数字都识别为0 .


要识别的图片是wow的时间数字截图,4个数字+1个冒号的图片大小才35*9像素。我认为插值过大可能是要识别的图片太小而且分辨率太低造成的,但是不确定,也不知道应该如何去解决(使用什么技术),求解答求关键词
...全文
1340 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
源代码大师 2021-05-10
  • 打赏
  • 举报
回复
引用 2 楼 蒙飞鸿 的回复:
引用 1 楼 it_xiangqiang 的回复:
希望对您有帮助:https://blog.csdn.net/it_xiangqiang/category_10993204.html
大佬,你这直接扔过来一套教程。。。
多学习学习,对你有好处
蒙飞鸿 2021-05-10
  • 打赏
  • 举报
回复
引用 1 楼 it_xiangqiang 的回复:
希望对您有帮助:https://blog.csdn.net/it_xiangqiang/category_10993204.html
大佬,你这直接扔过来一套教程。。。
源代码大师 2021-05-10
  • 打赏
  • 举报
回复
希望对您有帮助:https://blog.csdn.net/it_xiangqiang/category_10993204.html

4,246

社区成员

发帖
与我相关
我的任务
社区描述
OpenCV相关技术交流专区
计算机视觉人工智能opencv 技术论坛(原bbs) 广东省·深圳市
社区管理员
  • OpenCV
  • 幻灰龙
  • OpenCV中国团队
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

OpenCV中国团队官方博客:https://blog.csdn.net/opencvchina

试试用AI创作助手写篇文章吧