简要介绍一下我的情况: 本科电气工程,硕士专业是控制工程(研一,刚入学),但实际内容是在做图像方面的工作,自学过 C++( C+ +Primer Plus ),主要使用的工具是 OpenCV(C++版本)。 C++水平也就是看懂代码的水平吧,复杂算法看不懂,但一般流程性的代码没有问题。 没有学过数据结构,正在恶补中(网课)。 参与过一个项目,由于是刚进来,所以我的任务就是照着已有的代码改改功能这些工作,虽然完成了一些工作,但感觉也没学到些啥东西。
最近在翻着看 OpenCV 和 Eigen 的源码,但看得着实有些痛苦。我分析了一下,主要原因有以下几个方面: 1.代码写的少,很多新奇的写法根本就没见过。 2.抛开算法部分先不谈,光是理清各种类之间的继承关系就已经是一个相当大的工作量了,前期没注意到这点,导致看的越来越乱,越来越摸不清方向。 3.自己的 C++基础还是有些差,某些语法掌握的还不是很牢固。
目前的这个情况使我非常苦恼,就好比脚上拴上两大坨铁块在走路,每走一步都很费劲。 好在我是发自内心的喜欢计算机,以及我做的这个方向,所以每天都可以坐在电脑前看代码,试着写代码。
我就想问一下各位大佬,面对我这个情况,能否给我一些建议,总之,目标就是尽可能地摆脱这种状态? OpenCV 到底怎么学才最高效?(我的目标是尽可能地了解其运行机理,而不是仅仅会调用函数) 还有一个很关键的问题,C++的编程水平怎样才能有一个实质性的提高?(我是很想学好 C++这门语言的)
1
zzj0311 2019-09-25 23:05:04 +08:00 via Android 1
不是 cs 的为啥不用 MATLAB 呢🙈
|
2
tmachineff 2019-09-25 23:06:18 +08:00 via Android
不学 java ?
|
3
seki 2019-09-25 23:18:15 +08:00
了解运行原理的话,看文档和算法更快吧,直接看代码感觉是绕了远路
然后如果做科研的话,实现原型不是更重要么,完全可以用更简单灵活一点的语言 |
4
ayase252 2019-09-25 23:48:28 +08:00
先知道某个东西解决了什么问题,然后想想怎么用最简单的方法解决这个问题,一般到这里就够了。
|
5
rayhy 2019-09-25 23:54:43 +08:00 via Android 1
OpenCV 这种大型项目,个人感觉不适合从代码看起。最起码应该先看书学会了算法再看代码吧?建议先看数字图像处理里的算法再在 OpenCV 找对应的代码。学一部分算法看一部分代码。先从 OTSU (cv::threshold)看起呗。
|
6
zjsxwc 2019-09-26 06:49:03 +08:00 via Android 1
一般都是先会用然后才是看源代码,opencv 这种也是这样,可以先用 opencv 写点东西,在看 opencv 里的源代码实现,
这个项目里小例子挺多的 https://github.com/spmallick/learnopencv |
7
faller 2019-09-26 07:54:29 +08:00 via Android
咱俩差不多,只不过我跨考的计算机😂
|
8
excellentcx OP @tmachineff 我还是觉得 C++习惯一些
|
9
excellentcx OP @zzj0311 算法肯定是要掌握的啊,况且还能提升编程水平(至少我是这么想的),matlab 在工作中也不见得有太多人用啊
|
10
excellentcx OP @zjsxwc 谢谢,我进去看看
|
11
Zchary 2019-09-26 09:14:04 +08:00 via iPhone 1
Oreilly 上啃原版书 hands-on Algorithms for Computer Vision,常用算法 Opencv 实现都有,应该对你很有帮助
|
12
huruwo 2019-09-26 09:45:46 +08:00
一句话 多学多练
|
13
jagger2048 2019-09-26 09:57:09 +08:00
先会用,再去看源码。把图像处理里边的经典算法都用 opencv 跑一边摸清楚,看源码之前先自己实现一遍
|
14
zzj0311 2019-09-26 15:02:07 +08:00 via Android
@excellentcx 还有 Python 啊,非要盯着个新手不友好的玩意死怼,一边抱怨自己没基础,要么练要么弃,自己选咯
|