十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
边缘检测虽然能够检测出边缘,但边缘是不连续的,检测到的边缘并不是一个整体。图像轮廓是指将边缘连接起来形成的一个整体,用于后续的计算。
创新互联建站于2013年成立,是专业互联网技术服务公司,拥有项目成都网站建设、成都网站制作网站策划,项目实施与项目整合能力。我们以让每一个梦想脱颖而出为使命,1280元永和做网站,已为上家服务,为永和各地企业和个人服务,联系电话:18980820575
OpenCV提供了查找图像轮廓的函数cv2.findContours(),该函数能够查找图像内的轮廓信息,而函数cv2.drawContours()能够将轮廓绘制出来。
图像轮廓是图像中非常重要的一个特征信息,通过对图像轮廓的操作,我们能够获取目标图像的大小、位置、方向等信息。
函数cv2.findContours()的语法格式为:
式中的返回值为:
式中的参数为:
在OpenCV中,可以使用函数cv2.drawContours()绘制图像轮廓。该函数的语法格式是:
【例12.1】绘制一幅图像内的所有轮廓。
如果要绘制图像内的所有轮廓,需要将函数cv2.drawContours()的参数contourIdx的值设置为“-1”。
【例12.2】逐个显示一幅图像内的边缘信息。
【例12.3】使用轮廓绘制功能,提取前景对象。
将函数cv2.drawContours()的参数thickness的值设置为“-1”,可以绘制前景对象的实心轮廓。将该实心轮廓与原始图像进行“按位与”操作,即可将前景对象从原始图像中提取出来。
本例中将函数cv2.drawContours()的参数thickness设置为“-1”,得到了前景对象的实心轮廓mask。接下来,通过语句“cv2.bitwise_and(o, mask)”,将原始图像o与实心轮廓mask进行“按位与”运算,就得到了原始图像的前景对象。
1、Photoshop打开图片。
2、Photoshop打开图片后,点击工具栏中的查找边缘-风格化。
3、点击风格化之后,选择查找边缘。
4、点击查找边缘后,就可以把轮廓提取出来了。
5、Ctrl+L调整色阶。
6、然后进入通道页面,按住Ctrl键点击任意一个通道,把轮廓载入选区。
7、返回图层页面。
8、Ctrl+Shift+I反选。
9、反选后,Ctrl+J就可以把轮廓抠下来了。
1、查找轮廓(find_contours)
measure模块中的find_contours()函数,可用来检测二值图像的边缘轮廓。
函数原型为:
skimage.measure.find_contours(array, level)
array: 一个二值数组图像
level: 在图像中查找轮廓的级别值
返回轮廓列表集合,可用for循环取出每一条轮廓。
例1:
import numpy as np
import matplotlib.pyplot as plt
from skimage import measure,draw
#生成二值测试图像
img=np.zeros([100,100])
img[20:40,60:80]=1 #矩形
rr,cc=draw.circle(60,60,10) #小圆
rr1,cc1=draw.circle(20,30,15) #大圆
img[rr,cc]=1
img[rr1,cc1]=1
#检测所有图形的轮廓
contours = measure.find_contours(img, 0.5)
#绘制轮廓
fig, (ax0,ax1) = plt.subplots(1,2,figsize=(8,8))
ax0.imshow(img,plt.cm.gray)
ax1.imshow(img,plt.cm.gray)
for n, contour in enumerate(contours):
ax1.plot(contour[:, 1], contour[:, 0], linewidth=2)
ax1.axis('image')
ax1.set_xticks([])
ax1.set_yticks([])
plt.show()
结果如下:不同的轮廓用不同的颜色显示
牙叔教程 简单易懂
查找和已有图片相似的轮廓
查找轮廓结果
原图
要查找的图片
8.8.16-0
autojs自带opencv3.4.3
主要使用matchShapes, 比较两个形状的相似度,
第一个参数是待匹配的物体1,第二个是待匹配的物体2,
最重要的是一定要可视化, opencv支持画任何图形, 也支持文字
百度了一下, 说是matchShapes参数传错, 正常返回值最大是1, 最小是0,
把matchShapes参数改一下, 相似度调整为0.03
如果还是有多个轮廓, 我们可以继续添加维度, 比如轮廓的面积, 长宽比, 颜色, 宽高,
更复杂一点可以配合其他更明显的轮廓的相对位置
读取图片-- 高斯模糊-- 灰度-- 二值化-- findContours--
matchShapes--minAreaRect-- contourArea-- drawContours
部分内容来自网络
本教程仅用于学习, 禁止用于其他用途