java识别答题卡纸_opencv 识别答题卡
//test.cpp : 定义控制台应用程序的入口点。//#include"stdafx.h"#include"cv.h"#include"opencv2/imgproc/imgproc.hpp"#include"opencv2/highgui/highgui.hpp"#include"highgui.h"#include"cxcore.h"#include#include#include#include#include
using namespacestd;using namespacecv;class RectComp//Rect排序
{public:
Rect rm;
RectComp(Rect rms)
{
rm=rms;
}bool operator < (const RectComp& ti) const{return rm.x
}
};intmain()
{//装载图片
Mat srcImage1= imread("D:\\13.jpg");
Mat srcImage2,srcImage3,srcImage4,srcImage5;//namedWindow("hello-1", 1);//imshow("hello-1",srcImage1);//cv::waitKey(0);//图片变成灰度图片
cvtColor(srcImage1,srcImage2,CV_BGR2GRAY);//imshow("hello-2",srcImage2);//cv::waitKey(0);//图片二值化
threshold(srcImage2,srcImage3,200,255,THRESH_BINARY_INV);
imshow("hello-3",srcImage3);
cv::waitKey(0);//确定腐蚀和膨胀核的大小
Mat element = getStructuringElement(MORPH_RECT, Size(3, 3));//腐蚀操作
erode(srcImage3,srcImage4,element);//膨胀操作
dilate(srcImage4,srcImage5,element);
namedWindow("hello-5", 1);
imshow("hello-5", srcImage5 );
cv::waitKey(0);//确定每张答题卡的ROI区域
Mat imag_ch1 = srcImage5(Rect(2,20,268,40));
namedWindow("img1", 1);
imshow("img1",imag_ch1);
cv::waitKey(0);//提取已经涂好了的选项
std::vector<:vector> >chapter1;
findContours(imag_ch1,chapter1,RETR_EXTERNAL,CHAIN_APPROX_SIMPLE);
Mat result(imag_ch1.size(), CV_8U , cv::Scalar(255)) ;
cv::drawContours(result,chapter1,-1,cv::Scalar(0));
namedWindow("resultImage", 1);
cv::imshow("resultImage", result);
vectorRectCompList;for(int i = 0;i
{
Rect rm=cv::boundingRect(cv::Mat(chapter1[i]));
RectComp*ti = newRectComp(rm);
RectCompList.push_back(*ti);//printf("Rect %d x = %d,y = %d \n",i,rm.x,rm.y);
}
sort(RectCompList.begin(),RectCompList.end());
std::maplistenAnswer;//判断这部分的答题卡是否都已涂上
for(int t = 0;t
{if(RectCompList.at(t).rm.y<5)
{
listenAnswer[t]= "A";
}else if((RectCompList.at(t).rm.y>5)&&(RectCompList.at(t).rm.y<16))
{
listenAnswer[t]= "B";
}else if(RectCompList.at(t).rm.y>16)
{
listenAnswer[t]= "C";
}
printf("sorted %d x = %d,y = %d \n",t,RectCompList.at(t).rm.x,RectCompList.at(t).rm.y);
}for(map::iterator it = listenAnswer.begin();it!=listenAnswer.end();++it)
{
cout<first+1<second<
}
cv::waitKey(0);return 0;
}
java识别答题卡纸_opencv 识别答题卡相关推荐
- 【答题卡识别】基于hough变换答题卡判定与成绩统计含Matlab源码
1 简介 目前,考试阅卷使用光标阅读机进行阅卷.而教师个人及普通学校则难以承担光标阅读机高昂的购买与维护费用.如何保证计算机视觉相关技术在教育教学领域被充分应用,使教师个人,普通学校以及偏远山区的学校 ...
- 超简单集成华为HMS Core MLKit通用卡证识别SDK,一键实现各种卡绑定
标题前言 华为HMS MLKit提供的服务越来越多了,除常见的了银行卡识别的功能,大家可能还会疑问日常生活中的银行卡,会员卡可以识别吗,或者某一类证件号识别?也没有问题~但因为不同商家的卡号位置,版面 ...
- Java调用百度OCR文字识别的接口
调用百度OCR文字识别的接口,来自于百度官网,亲测可以使用 跳转链接 FileUtil的下载链接 Base64Util下载链接 HttpUtil下载链接 GsonUtils下载链接 Accurate. ...
- 利用Java进行身份证正反面信息识别
利用Java进行身份证正反面信息识别 1.百度授权信息准备 首先你得在百度AI开放平台上面注册一个账号,或者已经有百度账号了,网址是:https://ai.baidu.com/,如下图所示: 然后点击 ...
- 基于STM32的多功能门禁系统(AS608指纹识别、密码解锁、刷卡解锁)
目录 一.项目功能 二.视频 三.原理图 4.材料选择 5.部分程序 资料下载地址:基于STM32的多功能门禁系统 一.项目功能 1.AS608指纹解锁:可以录入.删除.验证指纹: 2.密码解锁:可以 ...
- 利用Java实现的图片中文字识别,你学会了吗?
一. 背景 今天有粉丝向波哥提出了这样一个疑问:给出一张图片,如何利用Java中的技术获取图片中的文字信息?针对这个问题,你有么有解决办法呢?如果你没有想到好的解决思路,也不用怕,看波哥来给你解决这个 ...
- java ocr文字识别软件_Java文字识别软件-调用百度ocr实现文字识别
java_baidu_ocr Java调用百度OCR文字识别API实现图片文字识别软件 这是一款小巧方便,强大的文字识别软件,由Java编写,配上了窗口界面 调用了百度ocr文字识别API 识别精度高 ...
- Java调用百度OCR文字识别API实现图片文字识别软件
java_baidu_ocr Java调用百度OCR文字识别API实现图片文字识别软件 这是一款小巧方便,强大的文字识别软件,由Java编写,配上了窗口界面 调用了百度ocr文字识别API 识别精度高 ...
- Java使用百度AI实现识别身份证照片信息,根据身份证号码,获取相关个人信息
Java使用百度AI实现识别身份证照片信息 百度智能云-登录 1.登录百度智能云,选择文字识别,创建相关信息 2.获取APP_ID.API_KEY.SECRET_KEY 核心处理代码 import c ...
- Java海康SDK车牌识别 二次开发
项目场景: 通过海康摄像头进行车牌识别. 注意避坑: (1)将官方文档的[库文件]里的HCNetSDK.dll.HCCore.dllHCNetSDKCom文件夹.libssl-1_1-x64.dll. ...
最新文章
- 推荐7款Mac上能极大提高效率的软件,建议收藏!
- 手机python代码写好了怎么运行-想在手机上编写python代码?手机上玩转python的利器...
- python 带参数的多重继承
- java将jfif格式转换成ipg_win10系统将jfif格式转jpg的操作方法
- [ZJOI2016]小星星
- go利用反射实现任意类型切片删除元素
- php 微信获取code,微信网页授权接口为什么获取不到code(已解决)
- ps分辨率像素英寸和厘米的区别_南南带你免费学习超级强大的做图软件-PS(第一章:第二节)...
- Python 基于项目自动生成 requirements.txt 文件
- 周遭心理学的应用-什么是心理学?
- linux 内核 禁止抢占,内核抢占实现(preempt)
- response.sendRedirect()的用法
- 国内无代码平台数据统计功能对比
- webvtt字幕转srt字幕方法
- 人机工程学产品设计案例_产品设计|手持产品设计案例大放送,手持类的产品设计要点...
- 电动汽车充电桩管理平台
- 头脑王者对战游戏html5源码,头脑王者分析笔记及微信小程序解包源码
- FHS和一些文件相关的操作命令
- 关于虚拟机及dockers
- Lua——迭代器的使用、pairs 和 ipairs区别
热门文章
- 【计算机网络】物理层
- 计算机论文 指导老师评语,毕业设计指导老师评语(精选5篇)
- 用matlab道路交通信息化,tiaffic 基于matlab十字路口交通流模拟仿真,多种集合 263万源代码下载- www.pudn.com...
- 水星路由器登录界面找不到服务器,新版水星(Mercurey)路由器后台登陆界面打不开怎么办?...
- 什么地图可以室内导航?室内导航技术发展趋势
- list tuple dirt set 的简单区分方法
- zooKeeper篇-zk的选举机制
- 基于QtGUI的宠物小精灵对战游戏设计
- 销售服务器账务处理,​销售货物和提供技术服务怎么做账
- kubernetes Pod驱逐机制