大致思路如下

  1. 对图片做降噪滤波处理
  2. 寻找硬币的边缘
  3. 使用硬币边缘打造蒙版,并切割出图像

对应的方法如下

  1. 对图片进行二值化COLOR_BGR2GRAY处理,高斯滤波GaussianBlur处理。
  2. 使用canny算子进行边缘查找,并使用findContours方法提取边缘坐标点。
  3. 使用boundingRect方法找出硬币所在的矩形进行裁切,使用minEnclosingCircle找出包络圆作为蒙版,并使用bitwise_and隐藏背景。

首先导入必要的库,测试一下是否加载成功,注意cv2.waitKey(0)一定不要忘记!

import cv2
import numpy as npimage = cv2.imread("coins.png")
cv2.imshow("if imread successfully",image)
cv2.waitKey(0)


接着进行灰度处理和模糊处理,在这之前需要关掉第一张图像

gray = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)
blurred = cv2.GaussianBlur(gray,(11,11),0)
cv2.imshow("blurred",blurred)
cv2.waitKey(0)


进行边缘提取

edged = cv2.Canny(blurred, 30, 150)
cv2.imshow("edged",edged)
cv2.waitKey(0)


在原图中进行边缘提取

# 注意这里只能返回2个变量
(cnts,_) = cv2.findContours(edged.copy(),cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)
print(" {} coins in the image".format(len(cnts)))
 显示:9 coins in the image

然后画在原图中

coins = image.copy()
cv2.drawContours(coins, cnts, -1, (0,255,0), 2)
cv2.imshow("coins",coins)
cv2.waitKey(0)


最后对图片进行裁切

coins = image.copy()
cv2.drawContours(coins, cnts, -1, (0,255,0), 2)
cv2.imshow("coins",coins)
cv2.waitKey(0)for (i,circle) in enumerate(cnts):# circle是每个提取出来的圆(x,y,w,h) = cv2.boundingRect(circle)print("coin #{}".format(i+1))coin_canvas = image[y:y+h, x:x+w]cv2.imshow("coin",coin_canvas)cv2.waitKey(0)mask = np.zeros(image.shape[:2], dtype = 'uint8')((centerX,centerY),radius) = cv2.minEnclosingCircle(circle)# 在蒙版上画圆,这里是灰度图,所以255表示白色cv2.circle(mask,(int(centerX),int(centerY)), int(radius), 255, -1)mask = mask[y:y+h, x:x+w]# 自身和自身进行与运算即可cv2.imshow("masked coin",cv2.bitwise_and(coin_canvas, coin_canvas, mask = mask))cv2.waitKey(0)

裁切出来的图片

加上蒙版的图片

以上代码均在notebook中运行通过。

使用OpenCV-python提取图片中的硬币相关推荐

  1. OpenCV python 提取图像内的三色

    OpenCV python 提取图像内的三色 原图 [opencv.jpg] import cv2 import numpy as npdef main():# 1.导入图片img_src = cv2 ...

  2. OpenCV+Python简单实践之硬币检测以及条形码检测

    目录标题 一.简单图片格式 1.位图 2.文件压缩比 二.用奇异值分解(SVD)对一张图片进行特征值提取(降维)处理 1.代码 2.效果 三.采用图像的开闭运算(腐蚀-膨胀),检测出2个样本图像中硬币 ...

  3. Python 提取图片中的GPS信息

    JPG图片中默认存在敏感数据,例如位置,相机类型等,可以使用Python脚本提取出来,加以利用,自己手动拍摄一张照片,然后就能解析出这些敏感数据了,对于渗透测试信息搜索有一定帮助,但有些相机默认会抹除 ...

  4. python提取图片中的文字自动填表_如何 提取图片中的文字?这款Python 库 4行代码搞定!...

    OCR是什么? 有一款软件叫扫描全能王,想必一些小伙伴听过,这是一个OCR集成软件,可以将图像内容扫描成文字. 所以说,OCR作用是对文本资料的图像文件进行分析识别处理,获取文字及版面信息. OCR的 ...

  5. python 提取图片的某个颜色_使用python提取图片中的主体颜色

    上次国庆节去谷歌开发者大会,体验了很多有趣的人工智能项目. 其中有一个颜色匹配的环节,叫做"AI调色板,解码缤纷艺术世界",让我觉得很有意思,回来后,我计划自己实现一个类似的功能. ...

  6. python提取图片中的曲线_OpenCV如何提取图片中曲线

    简单介绍 在实际的应用中,我们常常需要对图像中的曲线进行描述.处理,这个曲线可以是轮廓,骨架或者其他.可以用deque 描述曲线,接下来简单介绍下如何从图片中搜索这些曲线并保存. 首先,输入的图片是一 ...

  7. 用Python提取图片中的文字——百度智能云API

    百度智能云有很多功能,直接接入接口就可以调用函数使用,这里我们使用简单的方式,直接调用,不适用OpenCV.TensorFlow啥的..毕竟我不是大佬... 安装库 首先安装Python库,使用pip ...

  8. python提取图片中的表格,Python从图像中的表中提取值

    我要从PDF表格中提取值,然后将数据保存在json文件中, 我使用pytesseract从将pdf转换为的图像中获取文本, 现在的问题是,它给了我一个包含所有数据的大字符串. 我尝试通过SP进行拆分, ...

  9. python提取图片中的信息

    1.安装PIL(pillow).pytesseract,可通过setting->project:Python->Project Interpreter下载 2.下载识别引擎tesserac ...

最新文章

  1. 深度学习中的注意力机制(一)
  2. 【展开讲讲?xmind日常小知识】xmind2020插入表格
  3. mysql 数据日志分析_基于mysql数据库的日志分析系统
  4. 使用SSIS Slow Changing Transformation组件管理缓慢变化维
  5. 土地利用覆被变化的概念_【能源+气候】生物质能碳捕集与封存技术在气候变化下的减排潜力...
  6. HTML5 文本语义元素
  7. springboot2 war页面放在那_亚马逊产品页面如何优化?这些技巧要知道
  8. 爬虫学习之-Python list 和 str 互转
  9. SharePoint 2010之LINQ与SPMetal
  10. Linux命令解释之du
  11. 个人管理 - 我是这样偷着做架构的
  12. SPSS26版本软件超详细安装指导+内附安装资源
  13. 2021-04-02
  14. 六种复杂控制系统简述:串级、分程、比值、前馈、选择性和三冲量控制
  15. Bean初始化错误:Instantiation of bean failed; nested exception is java.lang.ExceptionInInitializerError
  16. Cisco VPP IKEV2 配置说明
  17. C++ std::regex | 正则表达式
  18. 初学者-CSS思维导图(上)
  19. web页面下实现文字环绕图片效果
  20. 手机处理器排行榜2019_2019十大手机读书软件排行榜

热门文章

  1. 微服务升级_SpringCloud Alibaba工作笔记0016---Nacos之服务提供者注册
  2. 杭电1422 重温世界杯
  3. fatal error C1189: #error : Building MFC application with /MD[d] (CRT dll version) requires MFC sha
  4. Inno Setup 如何让生成的setup.exe文件有管理员权限
  5. rn 0.57打包常见错误_linux管道命令介绍及常见用于场景
  6. 深度学习实践与部署(开篇)
  7. 从汇编的眼光看C++(之指针拷贝)
  8. php绕过漏洞的函数,PHP中有漏洞的函数总结
  9. cameraman matlab 自带图,[转载]【MATLAB】MATLAB的自带数据及可生成数据的函数——图片形式...
  10. GET请求与POST请求的区别