RELATEED CONSULTING
相关咨询
选择下列产品马上在线沟通
服务时间:8:30-17:00
你可能遇到了下面的问题
关闭右侧工具栏

新闻中心

这里有您想知道的互联网营销解决方案
go语言图片查找轮廓 golang图片识别

图像轮廓之查找并绘制轮廓

  边缘检测虽然能够检测出边缘,但边缘是不连续的,检测到的边缘并不是一个整体。图像轮廓是指将边缘连接起来形成的一个整体,用于后续的计算。

创新互联建站于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进行“按位与”运算,就得到了原始图像的前景对象。

ps怎么提取图片外轮廓

1、Photoshop打开图片。

2、Photoshop打开图片后,点击工具栏中的查找边缘-风格化。

3、点击风格化之后,选择查找边缘。

4、点击查找边缘后,就可以把轮廓提取出来了。

5、Ctrl+L调整色阶。

6、然后进入通道页面,按住Ctrl键点击任意一个通道,把轮廓载入选区。

7、返回图层页面。

8、Ctrl+Shift+I反选。

9、反选后,Ctrl+J就可以把轮廓抠下来了。

如何用python取图片轮廓

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()

结果如下:不同的轮廓用不同的颜色显示

autojs查找图片相似轮廓

牙叔教程 简单易懂

查找和已有图片相似的轮廓

查找轮廓结果

原图

要查找的图片

8.8.16-0

autojs自带opencv3.4.3

主要使用matchShapes, 比较两个形状的相似度,

第一个参数是待匹配的物体1,第二个是待匹配的物体2,

最重要的是一定要可视化, opencv支持画任何图形, 也支持文字

百度了一下, 说是matchShapes参数传错, 正常返回值最大是1, 最小是0,

把matchShapes参数改一下, 相似度调整为0.03

如果还是有多个轮廓, 我们可以继续添加维度, 比如轮廓的面积, 长宽比, 颜色, 宽高,

更复杂一点可以配合其他更明显的轮廓的相对位置

读取图片-- 高斯模糊-- 灰度-- 二值化-- findContours--

matchShapes--minAreaRect-- contourArea-- drawContours

部分内容来自网络

本教程仅用于学习, 禁止用于其他用途


分享标题:go语言图片查找轮廓 golang图片识别
分享URL:http://scyingshan.cn/article/hiicdc.html