雷囧羊 发表于 2021-3-11 17:36

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

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

雷囧羊 发表于 2021-3-11 17:38

或者说有什么更加轻量级的开源解决方案?

maritimus 发表于 2021-3-11 18:35

没懂,不用OCR怎么识别数字和选项?输出是怎么输出?或者说如果用matlab的话想怎么做

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/ 找到了这个,如果是那种涂黑的答题卡,应该只会更容易

雷囧羊 发表于 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的吗?

Litccc 发表于 2021-3-11 19:04

想了想应该不太难,用python的好处就是现成的轮子多,c++手撸轮子的路过

lixueaaa 发表于 2021-3-11 19:04

你要熟悉Matlab用Matlab也行啊。或者你想效率高用C++也行,我用过python和C++的opencv

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

serial 发表于 2021-3-11 19:31

董卓 发表于 2021-3-11 19:35

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

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

wrnk 发表于 2021-3-11 19:35

雷囧羊 发表于 2021-3-11 20:08

wrnk 发表于 2021-3-11 19:35
python学起来又不难 有必须用matlab的理由么

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

ryanz 发表于 2021-3-11 20:19

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

雷囧羊 发表于 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

雷囧羊 发表于 2021-3-11 23:22

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

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

qianoooo 发表于 2021-3-12 06:50

选项好办 数字识别率得上深度学习了 效果不会特别好
另外如果只适配一台设备比较简单 适配不同设备摄像头什么很麻烦 效果不好

雷囧羊 发表于 2021-3-12 12:09

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

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

lixueaaa 发表于 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这种相对好开发能拿来快速验证算法的才会有比较多的开源轮子。一个想法不一定对

qianoooo 发表于 2021-3-12 18:11

本帖最后由 qianoooo 于 2021-3-12 18:13 编辑

雷囧羊 发表于 2021-3-12 12:09
可能是我标题和主楼没讲清楚,误导大家了
只要在答题卡上涂黑对应位置就好,数字选项啥的都是在特定位置 ...
这个好办 唯一麻烦的的就是得多找几台设备看看做threshold的效果
另外要在尽量暗的环境下拍照效果比较好
另外从运行效率上来讲python如果做小批量处理应该性能够用了
matlab不大清楚 没试过
能用cpp最好

BRRM 发表于 2021-3-12 20:55

本帖最后由 BRRM 于 2021-3-12 20:58 编辑

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

DeepFishing 发表于 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比较好上手一些的样子

qianoooo 发表于 2021-3-13 13:40

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

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

win8 发表于 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
直接照这个思路做就完事了


多谢!这个很详细了!
页: [1]
查看完整版本: 想用OpenCV自制一个读答题卡的小软件有多大难度?