• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Python基于opencv的简单图像轮廓形状识别(全网最简单最少代码)

python 搞代码 4年前 (2022-01-09) 30次浏览 已收录 0个评论

可以直接跳到最后整体代码看一看是不是很少的代码!!!!

思路:
1. 数据的整合
2. 图片的灰度转化
3. 图片的二值转化
4. 图片的轮廓识别
5. 得到图片的顶点数
6. 依据顶点数判断图像形状

一、原数据的展示

三、图片轮廓的确定

3.1图片的灰度处理

以下以一张图片为例子作为说明
对于灰度的处理,选择使用opencv的cv2.cvtColor函数,代码示例如下:

d=os.listdir('C:\\Users\\dell\\Desktop\\cleardata\\')#文件路径
e=cv2.imread('C:\\Users\\dell\\Desktop\\cleardata\\'+d[5])#以矩阵的形式图片读入
plt.imshow(e)#画出示例图

进行灰度的转化:

g=cv2.cvtColor(e,cv2.COLOR_BGR2GRAY)##灰度转化

3.2图片的二值转化

对于图片的二值转化这里选用cv2.threshold函数,代码示例如下:

r,b=cv2.threshold(g,0,255,cv2.THRESH_OTSU)#二值转化,大于0的像素统一设置为255,小于等于0的统一设置为0

上述代码的第一个参数为灰度图形,第二个参数是阈值,即大于0的像素点转化为255,然后选用的THRESH_OTSU方法,具体说明如下:
通常情况,我们一般不知道设定怎样的阈值thresh才能得到比较好的二值化效果,只能去试。如对于一幅双峰图像(理解为图像直方图中存在两个峰),我们指定的阈值应尽量在两个峰之间的峰谷。这时,就可以用第本文来源gaodaimacom搞#^代%!码网@四个参数THRESH_OTSU,它对一幅双峰图像自动根据其直方图计算出合适的阈值(对于非双峰图,这种方法得到的结果可能不理想)。
对于双峰图,我们需要多传入一个参数cv2.THRESH_OTSU,并且把阈值thresh设为0,算法会找到最优阈值,并作为第一个返回值ret返回。

其中会返回两个值,第二个值就是二值化后的图形矩阵。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Python基于opencv的简单图像轮廓形状识别(全网最简单最少代码)
喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址