找回密码
 立即注册
搜索
查看: 2828|回复: 28

[软件] 想用OpenCV自制一个读答题卡的小软件有多大难度?

[复制链接]
     
发表于 2021-3-11 17:36 | 显示全部楼层 |阅读模式
RT,机缘巧合才了解到OpenCV这个东西,想自己弄一个读答题卡的小软件有多大难度?
之前用过好几年matlab,虽然没怎么用过matlab的图像处理功能,但是大部分功能都还会
图片质量方面,都是扫描仪扫特定格式答题卡,jpeg格式,内容也比较简单不会很难识别,不涉及OCR
理论方面,应该不会有太多要求吧?但是像ANN,SVM都是基本懂的
不需要后续的数据处理,能简单输出读到的数字和选项就行了,再加一个重命名吧
来泥潭问问,有什么直接针对读答题卡的学习路线吗?
一定要python吗?
回复

使用道具 举报

     
 楼主| 发表于 2021-3-11 17:38 | 显示全部楼层
或者说有什么更加轻量级的开源解决方案?
回复

使用道具 举报

     
发表于 2021-3-11 18:35 | 显示全部楼层
没懂,不用OCR怎么识别数字和选项?输出是怎么输出?或者说如果用matlab的话想怎么做
回复

使用道具 举报

     
发表于 2021-3-11 18:41 | 显示全部楼层
https://xxpcb.github.io/2019/07/ ... %E8%AF%86%E5%88%AB/ 找到了这个,如果是那种涂黑的答题卡,应该只会更容易

评分

参与人数 1战斗力 +1 收起 理由
雷囧羊 + 1 好评加鹅

查看全部评分

回复

使用道具 举报

     
 楼主| 发表于 2021-3-11 19:02 来自手机 | 显示全部楼层
maritimus 发表于 2021-3-11 18:35
没懂,不用OCR怎么识别数字和选项?输出是怎么输出?或者说如果用matlab的话想怎么做 ...

就是答题卡,选项涂黑
只要识别涂黑的地方就行了
回复

使用道具 举报

     
 楼主| 发表于 2021-3-11 19:04 来自手机 | 显示全部楼层
ryanz 发表于 2021-3-11 18:41
https://xxpcb.github.io/2019/07/07/%E7%AE%80%E6%98%93%E7%AD%94%E9%A2%98%E5%8D%A1%E8%AF%86%E5%88%AB/  ...

谢谢!再厚脸皮问一下
这个是Python的,有MATLAB的吗?
回复

使用道具 举报

     
发表于 2021-3-11 19:04 | 显示全部楼层
想了想应该不太难,用python的好处就是现成的轮子多,c++手撸轮子的路过
回复

使用道具 举报

     
发表于 2021-3-11 19:04 | 显示全部楼层
你要熟悉Matlab用Matlab也行啊。或者你想效率高用C++也行,我用过python和C++的opencv

-- 傲娇地来自 Stage1未知客户端
回复

使用道具 举报

头像被屏蔽
     
发表于 2021-3-11 19:31 来自手机 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

     
发表于 2021-3-11 19:35 | 显示全部楼层
Litccc 发表于 2021-3-11 19:04
想了想应该不太难,用python的好处就是现成的轮子多,c++手撸轮子的路过 ...

用java手翻c++轮子的路过……
为啥只有python多
回复

使用道具 举报

头像被屏蔽
     
发表于 2021-3-11 19:35 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

     
 楼主| 发表于 2021-3-11 20:08 来自手机 | 显示全部楼层
wrnk 发表于 2021-3-11 19:35
python学起来又不难 有必须用matlab的理由么

灵魂提问不过确实是个Python起步的契机
回复

使用道具 举报

     
发表于 2021-3-11 20:19 | 显示全部楼层
稍微又搜了下,依据之前那个链接里的引用文章,找到这是属于 omr(optical-mark-recognition) 问题,然后又找到这篇matlab的,https://engineerexperiences.com/ ... n-using-matlab.html  ,不过我三四年没碰matlab,语法忘的一干二净,看了看似乎没用到高级的图像处理导致可能会出错,你也可以根据 optical mark recognition 这个关键词多搜搜

评分

参与人数 1战斗力 +1 收起 理由
雷囧羊 + 1 好评加鹅

查看全部评分

回复

使用道具 举报

     
 楼主| 发表于 2021-3-11 20:42 | 显示全部楼层
ryanz 发表于 2021-3-11 20:19
稍微又搜了下,依据之前那个链接里的引用文章,找到这是属于 omr(optical-mark-recognition) 问题,然后 ...

关键词get
多谢!思路开阔了不少
回复

使用道具 举报

     
发表于 2021-3-11 20:50 | 显示全部楼层
刚好前两天看到一个北邮的老师做的选票自动识别统计系统
https://www.bilibili.com/video/BV1K5411P7VZ

评分

参与人数 1战斗力 +1 收起 理由
雷囧羊 + 1 好评加鹅

查看全部评分

回复

使用道具 举报

     
 楼主| 发表于 2021-3-11 23:22 | 显示全部楼层
沧粟 发表于 2021-3-11 20:50
刚好前两天看到一个北邮的老师做的选票自动识别统计系统
https://www.bilibili.com/video/BV1K5411P7VZ ...

厉害,这个可比我的需求复杂多了
回复

使用道具 举报

     
发表于 2021-3-12 06:50 来自手机 | 显示全部楼层
选项好办 数字识别率得上深度学习了 效果不会特别好
另外如果只适配一台设备比较简单 适配不同设备摄像头什么很麻烦 效果不好
回复

使用道具 举报

     
 楼主| 发表于 2021-3-12 12:09 | 显示全部楼层
qianoooo 发表于 2021-3-12 06:50
选项好办 数字识别率得上深度学习了 效果不会特别好
另外如果只适配一台设备比较简单 适配不同设备摄像头什 ...

可能是我标题和主楼没讲清楚,误导大家了
只要在答题卡上涂黑对应位置就好,数字选项啥的都是在特定位置上
比如说,某一题里一排带数字圆圈,123456789,涂黑3的圆圈就说明这题是3
按我的理解应该是不用识别具体的数字或字母的,识别出相对位置就行
还是说我哪里低估了难度?
回复

使用道具 举报

     
发表于 2021-3-12 12:24 来自手机 | 显示全部楼层
我感觉如果答题卡长得都一样,不用registration的话,小项目直接把ROI hard coding进去。然后一排四个选项比如ABCD,各取几个feature,比如强度的平均值/强度分布,测试一下再改改就行了。
回复

使用道具 举报

     
发表于 2021-3-12 12:37 | 显示全部楼层
Litccc 发表于 2021-3-11 19:04
想了想应该不太难,用python的好处就是现成的轮子多,c++手撸轮子的路过 ...

C C++起步这么多年
就没有攒下祖产祖业多留点轮子吗?
回复

使用道具 举报

     
发表于 2021-3-12 12:43 | 显示全部楼层
泉玲奈 发表于 2021-3-12 12:37
C C++起步这么多年
就没有攒下祖产祖业多留点轮子吗?

C和C++性能强,历史积累的东西多半是商业软件吧。Python这种相对好开发能拿来快速验证算法的才会有比较多的开源轮子。一个想法不一定对
回复

使用道具 举报

     
发表于 2021-3-12 18:11 | 显示全部楼层
本帖最后由 qianoooo 于 2021-3-12 18:13 编辑
雷囧羊 发表于 2021-3-12 12:09
可能是我标题和主楼没讲清楚,误导大家了
只要在答题卡上涂黑对应位置就好,数字选项啥的都是在特定位置 ...

这个好办 唯一麻烦的的就是得多找几台设备看看做threshold的效果
另外要在尽量暗的环境下拍照效果比较好
另外从运行效率上来讲python如果做小批量处理应该性能够用了
matlab不大清楚 没试过
能用cpp最好
回复

使用道具 举报

     
发表于 2021-3-12 20:55 | 显示全部楼层
本帖最后由 BRRM 于 2021-3-12 20:58 编辑

会matlab就matlab就行了,听需求看上去没什么难的,2天就能写出个半成品了。以后觉得matlab效率低了,再手动搬运到其他语言上就是了。
回复

使用道具 举报

     
发表于 2021-3-12 21:05 来自手机 | 显示全部楼层
应该很简单的吧,Python写,答题卡本身就有定位符。
手动画个标准模板,然后定位,校正,二值化,在把二值图与模板图对上去。
不是只能Python,我在LabVIEW里面写halcon玩,但是建议Python

—— 来自 Sony H8296, Android 10上的 S1Next-鹅版 v2.4.3.1
回复

使用道具 举报

     
 楼主| 发表于 2021-3-13 13:17 | 显示全部楼层
qianoooo 发表于 2021-3-12 18:11
这个好办 唯一麻烦的的就是得多找几台设备看看做threshold的效果
另外要在尽量暗的环境下拍照效果比较好
...

确实可能要多试几个设备,应该都是用扫描仪所以图像质量应该都过得去
python赶鸭子上架还能上一上
cpp可真是要了老命了
回复

使用道具 举报

     
 楼主| 发表于 2021-3-13 13:19 | 显示全部楼层
DeepFishing 发表于 2021-3-12 21:05
应该很简单的吧,Python写,答题卡本身就有定位符。
手动画个标准模板,然后定位,校正,二值化,在把二值 ...

看了下halcon...
对比起来看来还是opencv比较好上手一些的样子
回复

使用道具 举报

     
发表于 2021-3-13 13:40 | 显示全部楼层
雷囧羊 发表于 2021-3-13 13:17
确实可能要多试几个设备,应该都是用扫描仪所以图像质量应该都过得去
python赶鸭子上架还能上一上
cpp可 ...

扫描仪好办的
https://www.youtube.com/watch?v=0IqCOPlGBTs
直接照这个思路做就完事了
不过他用的方案识别率不高

评分

参与人数 1战斗力 +1 收起 理由
雷囧羊 + 1 好评加鹅

查看全部评分

回复

使用道具 举报

     
发表于 2021-3-13 15:59 来自手机 | 显示全部楼层
如果是机读卡,并且上了扫描仪,印刷本身就有网格和mark的,直接根据mark和网格切片二值化,算每个区域涂黑面积比例就完事了
回复

使用道具 举报

     
 楼主| 发表于 2021-3-13 18:20 | 显示全部楼层
qianoooo 发表于 2021-3-13 13:40
扫描仪好办的
https://www.youtube.com/watch?v=0IqCOPlGBTs
直接照这个思路做就完事了

多谢!这个很详细了!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|上海互联网违法和不良信息举报中心|网上有害信息举报专区|962110 反电信诈骗|举报电话 021-62035905|Stage1st ( 沪ICP备13020230号-1|沪公网安备 31010702007642号 )

GMT+8, 2025-7-21 02:37 , Processed in 0.181716 second(s), 8 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表