我的工程实践是印章检测,可以用opencv的来实现印章的检测与去除。下面是opencv的一些操作的代码
1.分析其在源代码目录结构、文件名/类名/函数名/变量名等命名、接口定义规范和单元测试组织形式等方面的做法和特点;
opencv是一个语言库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。
在实用opencv前要先安装,安装之后在jupyter notebook中输出import cv2 。调用opencv的内置函数时,要加上从cv2.函数名,如,此处读入一张猫的图片。由于python是根据缩进来控制逻辑的,所以正确的缩进尤为重要,好在jupyter notebook提供了自动缩进功能。
2文件名/类名/函数名/变量名等命名、接口定义规范
opencv的函数命都是有英语含义的,如读入图像时cv2.imread('cat.jpg'),imread表示image read 读入图片,cv2.imshow("img_gray", img_gray)表示输出图像,方便记忆与学习,
3列举哪些做法符合代码规范和风格一般要求列举;
1)适当的备注时符合代码规范的一般要求;
2)由于jupyter notebook可以即时出,所以即时的执行结果,可以立刻看到结果是不是符合预期,加以调整;
3)代码的函数命,清晰明了,可以一眼明白函数具有什么功能。
4)由于python是用分行来表明逻辑的,所以多分行有利于读懂代码,维护代码。
4列举哪些做法有悖于“代码的简洁、清晰、无歧义”的基本原则,及如何进一步优化改进;
1)命名
如果你给变量起名为a,b,c,用简单的文本编辑器就没法搜索它们的引用。而且,没人能猜到它们的含义。
首字母大写的缩写:IR用来表示image read就很不合理
同义词用来用去:例如 display, show
2)注释,如果没有注释,别人要花很长时间来读你的代码,费时费力,有可能下次自己读代码的时候,都会都不懂。
5总结同类编程语言或项目在代码规范和风格的一般要求
python要求用缩进来表示逻辑块,所以缩进对于python格外重要
每行代码尽量不超过80个字符
禁止复合语句,即一行中包含多个语句:
模块级函数和类定义之间空两行;
类成员函数之间空一行;
要使用太多的连续空行来区分代码的逻辑块
函数的参数列表中,默认值等号两边不要添加空格