资源简介
基于Opencv的简单数字识别,适用于初学者入门,有助于开拓初学者的思维,帮助其更好地入门,代码详细,有很多注释,简单易懂!
代码片段和文件信息
#include
#include
#include
#include
using namespace std;
using namespace cv;
//创建记录轮廓数量和坐标的结构体
struct num_contours
{
double x y; //轮廓的x、y坐标
int index; //轮廓的顺序
bool operator <(num_contours &m)
{
if (y > m.y+50) return false;
else if (y > m.y-50)
{
if (x < m.x) return true;
else return false;
}
else return true;
}
}num_contours[100];
//创建记录结果的结构体
struct result
{
double data;
int num;
bool operator<(result &m)
{
if (data < m.data)return true;
else return false;
}
}result[100];
void select_result(Mat & src int num);
double compare(Mat &src Mat &model);
vector imread_model();
void deal(Mat &src Mat &model int m);
void select_result(Mat & src int num);
int main()
{
Mat src gray_src dest dst;
src = imread(“C:/Users/86159/Desktop/num_text/num_text_02.png“); //加载原图
cvtColor(src gray_src COLOR_BGR2GRAY); //对图像进行预处理
threshold(gray_src dest 150 255 THRESH_BINARY_INV);
vector> contours;
vector hierarchy;
findContours(dest contours hierarchy RETR_EXTERNAL CHAIN_APPROX_NONE Point(0 0)); //提取轮廓
vector rect;
Rect min_bounding_rectre_rect;
float tl_x br_y width height;
for (int i = 0; i < contours.size(); i++)
{
if (contourArea(contours[i]) > 50)
{
min_bounding_rect = boundingRect(contours[i]);
rect.push_back(boundingRect(contours[i]));
tl_x = (float)min_bounding_rect.tl().x;
br_y = (float)min_bounding_rect.br().y;
width = (float)min_bounding_rect.width;
height = (float)min_bounding_rect.height;
num_contours[i].x = (tl_x * 2 + width) / 2.0; //计算轮廓中心点
num_contours[i].y = (br_y * 2 + height) / 2.0;
num_contours[i].index = i;
}
}
sort(num_contours num_contours + contours.size()); //根据轮廓中心点坐标进行排序
vector roi_rect(cont
相关资源
- 数字信号处理C++程序来源《数字处理
- opencv 人脸追踪 自动打马赛克
- c/c++ 最速下降法计算最优值 利用ar
- ue4蓝图c++动态改变staticmeshactor材质动
- SHA-256算法的C++实现及demo
- matlab2013a/b vs2013支持
- MATLAB数字图像处理:从仿真到C C++代码
- C++基础入门.md
- 猜动物游戏.zip
- 学生管理系统c++
- OpenCV贾志刚视频教程完整版
- 基于C++的JPEG图片信息隐藏及提取
- opencv实现surf算法
- opencv简单的暗通道去雾算法
- C++继承,剪刀石头布
- 运输问题c语言代码
- 校园失物招领管理系统.rar
- 卡尔曼滤波算法航迹预测.rar
- C++Builder6.0破解版安装包
- 简单文本编辑器C++
- 图灵机用作转换器计算x的y次幂,含
- C++实现的高斯投影正算和反算
- C++用类读取和处理TXT文件数据
- C++实现7.4汉明码编码
- C++实现DNS劫持
- 页面置换算法OPT、FIFO、LRU实现--C++版
- openv人脸模板采集程序
- 面向对象程序设计风格的五子棋程序
- C++期末复习 程序填空题 1
- c++ 计算器 能实现带括号的小数计算
评论
共有 条评论