2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > 网上阅卷系统php源码 又开源了 网上阅卷系统自动识别功能代码 | 学步园

网上阅卷系统php源码 又开源了 网上阅卷系统自动识别功能代码 | 学步园

时间:2020-12-01 16:14:04

相关推荐

网上阅卷系统php源码 又开源了 网上阅卷系统自动识别功能代码 | 学步园

想让自己轻松点就要让计算机多为你做点!

前几天一个朋友找到我让我做一个网上阅卷系统,就是实现这么几个功能:高速扫描仪扫描试卷后得到一张一张的图片,软件的功能就是处理图片,计算成绩。再详细点就是自动识别考生涂的学号,自动识别考生的选择题答案并记录,后面的大题要分块,把每一个题从试卷中分离出来,转发给老师进行阅卷。最后就是实现成绩的汇总与分析。

说起来功能也不算复杂,实现起来细节性的东西还是挺多的,比如每一科的试卷都不相同,要做一个通用型的软件,适合各种类型的试卷,还有就是服务器的设置呀,学生信息的保密呀,各种错误的处理啊……反正挺麻烦的,都怪我知识不够。

这个项目是挺好的,作为一个大学生,能做出来的话对各方面的能力都是一种提升,可惜以我们现在的水平,做这个软件还是很困难的,我现在只会C,C++,这个软件肯定需要一个图形化界面,我MFC还不会,windows的api就会那么几个,信息的存储要用到数据库,我数据库也不会,悲剧,还有就是互联网通信技术,每台老师的电脑和服务器要进行通信,我也不知道怎么编程实现……太悲剧了!

有时候我就想在大学里我到底学到了什么?什么时候我能做出一个像模像样的软件?各种实用的技术什么时候才能掌握?看到学长一个一个都这么牛,我hold不住了,抓紧时间学把!想想刚进大学时,我基本就是一个电脑盲,不努力真不行了!我感觉我一个同学高中时都比我现在厉害……

废话不多说了,前几天我那个朋友商量了一下,他说除了识别那一块外,其他的都是小事(又是一个大牛!)。我想了想,识别那一块并不是那么难的,我应该能做到,然后就接下了这个任务。

下面说说识别的方法:这实际上就是一个概率

软件运行截图(可以正确识别学号):

程序源码:

/*

功能:网上阅卷系统的识别

作者:ma6174

邮箱:ma6174@

时间:2月23日

其他:包含的头文件来则easyx的图形库

*/

#include

#include

#include

#include

#include

#include

//定义方格的大小和方格的间距,根据实际情况做相应的修改#defineBOX_X42

#defineBOX_Y13

#defineBLANK_X18

#defineBLANK_Y25

//颜色分量类classrgb

{

public:

BYTEred;

BYTEgreen;

BYTEblue;

};

//判断一个点是不是黑色booljudge_black(rgbcolor)

{

if(color.blue+color.green+color.red<30)//可能会有点误差,根据实际情况调整returntrue;//黑色,有标记returnfalse;

}

//判断一个方格有没有被填涂booljudge_box(intx,inty,HDChdc)

{

inti,j,total=0,count=0;

COLORREFcolor;

for(i=x+2;i

for(j=y+1;j

{

total++;

color=GetPixel(hdc,i,j);

rgbtemp;

temp.red=GetRValue(color);

temp.green=GetGValue(color);

temp.blue=GetBValue(color);

if(judge_black(temp)==true)

count++;

}

}

if(double(count)/total>0.5)//黑色的比例大于50%则认为该方格被填涂returntrue;

returnfalse;

}

//判断所有的,入口参数分别是起始横坐标,起始纵坐标,行数,列数,窗口句柄voidjudge_all(intstart_x,intstart_y,inthangshu,intlieshu,HDChdc)

{

inti,j;

for(i=0;i

{

for(j=0;j

{

//Sleep(50);//circle(start_x+i*(BOX_X+BLANK_X),start_y+j*(BOX_Y+BLANK_Y),10);if(judge_box(start_x+i*(BOX_X+BLANK_X),start_y+j*(BOX_Y+BLANK_Y),hdc)==true)

{

printf("%d",j);

//outtextxy(start_x+i*(BOX_X+BLANK_X),start_y+j*(BOX_Y+BLANK_Y),"A");}

}

//printf("\n");}

}

intmain()

{

intstart_x,start_y,total=0,count=0;

initgraph(1440,900);

cleardevice();

IMAGEimg;

loadimage(NULL,"d:\\1.jpg");

HDChdc=GetImageHDC();

MOUSEMSGm;

while(1)//通过鼠标点击得到起始位置{

m=GetMouseMsg();

if(m.uMsg==WM_LBUTTONDOWN)

{

start_x=m.x;

start_y=m.y;

break;

}

}

judge_all(start_x,start_y,18,10,hdc);

printf("\n");

getch();

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。