大家好,这是我的第一个问题所以请保持温和.我有一个计算机视觉领域的项目,我是新的,我会很感激一些帮助.我有一个pcb的图像,我的(首先)任务是从背景中切断电路板并将其保存到新文件.

如果结果只是没有灰色背景的普通pcb,那就没问题了.

我到目前为止尝试的是,首先使用阈值将图像转换为二进制.然后我使用cv2.findContours搜索轮廓,找到它们后,我对轮廓进行了排序并绘制了最大的轮廓

经过一些研究,我发现了一种切割轮廓并将其保存为新图像的方法.我使用x,y,w,h = cv2.boundingRect来查找轮廓的宽度和高度,并使用[y:y h,x:x w]来仅保存轮廓.问题是,使用这种方法我也会因为某些原因而考虑一些背景,如pic3所示.

有没有办法切断电路板,所以结果将是图像pic1中的黑色矩形或至少没有灰色背景的电路板?

UPDATE

我设法制作了面具并做了bitwise_and,但结果是黑色background.the result板可以有人帮我删除黑色背景并只留下图像中的板吗?

谢谢!

最佳答案 我做了一些工作,并按照以下方式裁剪区域.我想这就是你想要的.

基本上,我在图像上做这些操作.

1. medianBlur图像,阈值和变形操作.

2.项目到轴,阈值并获得约束.

3.裁剪该地区.

#!/usr/bin/python3

# 2017.10.04 23:45:01 CST

# 2017.10.05 00:52:26 CST

#how to cut a contour from an image and save it to a new file

from matplotlib import pyplot as plt

import numpy as np

import cv2

import time

imgname = "pcb.jpg"

img = cv2.imread(imgname)

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

## medianBlur, threshold and morph-close-op

median = cv2.medianBlur(gray, ksize=17)

retval, threshed = cv2.threshold(median, 110, 255, cv2.THRESH_BINARY_INV)

closed = cv2.morphologyEx(threshed, cv2.MORPH_CLOSE, np.ones(15,15))

## Project to the axis

H,W = img.shape[:2]

xx = np.sum(closed, axis=0)/H

yy = np.sum(closed, axis=1)/W

## Threshold and find the nozero

xx[xx<60] = 0

yy[yy<100] = 0

ixx = xx.nonzero()

iyy = yy.nonzero()

x1,x2 = ixx[0][0], ixx[0][-1]

y1,y2 = iyy[0][0], iyy[0][-1]

## label on the original image and save it.

res1 = cv2.rectangle(img.copy(), (x1,y1),(x2,y2), (0,0,255),2)

res2 = img[y1:y2,x1:x2]

cv2.imwrite("result1.png", res1)

cv2.imwrite("result2.png", res2)

python裁剪图片并保存_python – 如何从图像中剪切轮廓并将其保存到新文件中相关推荐

  1. python裁剪图片边缘模糊_Python OpenCV 图片高斯模糊

    Python OpenCV 365 天学习计划,与橡皮擦一起进入图像领域吧. 基础知识铺垫 看到一种说法,解释高斯模糊的比较简单,高斯模糊是带加权的均值模糊. 大概解释如下: 高斯模糊实质上就是一种均 ...

  2. Python裁剪图片(Crop an Image)

    Python裁剪图片(Crop an Image) 目录 Python裁剪图片(Crop an Image) #原始图像 #图像剪裁 #处理后的图像

  3. python文件读取方法read(size)的含义是_在Python中可使用read([size])来读取文件中的数据,如果参数size省略,则读取文件中的()。...

    [单选题]李明在他所属的公司工作五年,每天都很认真地处理繁杂的事情,同事们都夸他认真,但是依然没有建树,这是因为: [多选题]品牌标志的作用表现在 [单选题]新产品开发的第一个阶段是_______. ...

  4. python文件读取方法read(size)的含义是_在Python中可使用read([size])来读取文件中的数据,如果参数size省略,则读取文件中的()。(4.0分)_学小易找答案...

    [单选题]文本文件存储的是(),由若干文本行组成,通常每行以换行符 '\n' 结尾.(4.0分) [单选题]()属性是返回被打开文件的访问模式.(4.0分) [单选题]重力坝是由砼或( )修筑而成的大 ...

  5. python使用pandas中的to_json函数将dataframe数据写入json文件中

    python使用pandas中的to_json函数将dataframe数据写入json文件中 目录 python使用pandas中的to_json函数将dataframe数据写入json文件中 #导入 ...

  6. python裁剪图片box并保存_python 截取XML中bndbox的坐标中的图像,另存为jpg的实例

    文件目录 Annotations中是XML文件. JPEGImages中是对应的JPG文件 XML文件 要截取bndbox坐标中的内容. python代码 # -*- coding: utf-8 -* ...

  7. python将图片转换为字符_python如何将图片转换为字符图片

    简介 一个简单的python程序,将图片转换为字符图片. (为了简便,很多参数写死了,自己看着改吧. (←∀←)) 正文 原图(侵删) 结果图 源码 [更多细节]-->戳这里 #-*- codi ...

  8. python 裁剪图片

    最近笔者有个东西,需要上传的时候,让用户来裁剪图片,网上基本的做法,就是在本地的浏览器裁剪完毕,把裁剪后的坐标情况告诉服务器,让服务器来裁剪,因为笔者不是用PHP,无法享受GD模块的帮助了,所以利用p ...

  9. python将图片转为字符_Python将图片转化为字符画

    简介 最近发现一个有趣的操作, 将一张图片转化为字符串的模式来显示! 如图 准备 首先需要安装一个CV模块用来导入图片的#pip install opencv-python 然后明确下程序的设计思路1 ...

最新文章

  1. w3wp.exe内存占用过高(网站打不开,应用程序池回收就正常)
  2. mysql添加枚举约束语句_mysql8 参考手册--MySQL如何处理约束
  3. 宝塔 php curl 配置,【笔记】宝塔面板配置laravel
  4. java巴特沃斯滤波器编程_巴特沃斯(Butterworth)滤波器 (1)
  5. 如何在CRM WebClient UI里使用HANA Live Report
  6. 深入react技术栈(1):React简介
  7. 【numpy】np.random.normal()函数
  8. 【WPF】右下角弹出自定义通知样式(Notification)——简单教程
  9. 使用Eclipse开发基于SSH三大框架的Web项目带图详解
  10. 大牛直播SDK-Windows RTMP/RTSP/本地FLV播放器使用说明...
  11. 社区发现算法————总结
  12. centos部署mosquitto
  13. python爬虫Selenium批量关注微博用户
  14. 编译原理学习之:上下文无关文法(Context-free Grammar)和下推自动机(Push-down automata)
  15. 敏涵控股集团董事长刘敏: “匠心精神”的专业引路人
  16. linux笔记(6):东山哪吒D1H测试HDMI显示内置图片-命令行调试
  17. Synchronized你以为你真的懂?
  18. ICSharpCode.SharpZipLib 压缩、解压文件
  19. Leetcode日练笔记8 #702 Search in a Sorted Array of Unknown Size (Medium)
  20. Deseja sua sorte boa, Renato Augusto

热门文章

  1. 工作流实战_21_flowable 加签 任务向前加签 向后加签
  2. 深入理解javascript之原型和原型链
  3. 学生成绩管理系统java+mysql+swing入门级项目开发
  4. python line strip_Python进阶---python strip() split()函数实战(转)
  5. python3新式类_python新式类和旧式类区别
  6. mysql csdn 知乎_CSDN 怎么样?
  7. C语言逗号表达式 - C语言零基础入门教程
  8. Java zset 应用_Java简单使用redis-zset实现排行榜
  9. js 条码枪扫描_年会展台 精彩不断 | 沧田:从打印到扫描录入 国产品牌从未停止...
  10. oracle中的自带函数,求完整的ORACLE自带函数文档