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

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

4PM6F.jpg

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

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

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

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

UPDATE

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

谢谢!

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

Ofdd0.png

cydaV.jpg

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

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)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/533666.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

flash代码_Flash如何对制作文件进行优化

对FLASH进行优化分为两方面&#xff0c;一方面是代码上的优化&#xff0c;主要是通过优化提高FLASH性能&#xff0c;降低CPU占用和内存使用。另一方面是资源的优化&#xff0c;这方面的优化是为了减小编译后的文件大小以及制作文件的大小&#xff0c;因为如果不进行相应的优化&…

deepin系统转为windows_windows系统下安装深度系统deepin

前期准备DiskGenius(用来扩展分区)deepin-20-amd64.iso(深度系统镜像文件)相关文件下载首先下载安装时要用的工具&#xff0c;分别为:DiskGenius , UltraISODiskGenius是一款磁盘工具&#xff0c;创建系统分区。UltraISO是用来打开系统光盘镜像文件工具。Win8/8.1/10无需下载Ul…

软件开发模型_QT开发(二十三)——软件开发流程

一、软件开发流程简介软件开发流程是通过一系列步骤保证软件产品的顺利完成&#xff0c;是软件产品在生命周期内的管理学。软件开发流程的本质是软件开发流程与具体技术无关&#xff0c;是开发团队必须遵守开的规则。二、常见软件开发流程模型常见的软件开发流程模型包括即兴模…

python3.6.2用pyinstaller3.4报错_OceanBase 2.2 版本体验:用 BenchmarkSQL 跑 TPC-C

OB君&#xff1a;好消息&#xff01;「 OceanBase 2.2 版本 」正式上线官网啦&#xff01;&#xff08;点击阅读原文即可直接下载&#xff09;OceanBase 2.2版本是成功支撑2019年天猫双11大促的稳定版本&#xff0c;同时也是用于TPC-C测试且荣登TPC-C性能榜首的版本。我们将在接…

hive窗口函数_Hive sql窗口函数源码分析

在了解了窗口函数实现原理 spark、hive中窗口函数实现原理复盘 和 sparksql比hivesql优化的点(窗口函数)之后&#xff0c;今天又撸了一遍hive sql 中窗口函数的源码实现&#xff0c;写个笔记记录一下。简单来说&#xff0c;窗口查询有两个步骤&#xff1a;将记录分割成多个分区…

容大打印机ip修改工具_M1芯片版Mac无法连接打印机怎么办?

文末有优惠券在入手了M1芯片版MacBook Pro后&#xff0c;昨天我打算连接一下实验室的打印机。这个打印机的型号是HP LaserJet Professional M1213nf MFP&#xff0c;在同一个局域网内通过搜索IP即可连接。在我的旧设备2015款MacBook Air上&#xff0c;很轻松就连接了打印机。可…

语音对讲软件_三款语音转文字工具,语音输入,高效转换,准确率高

关于语音转文字的软件我在之前讲了很多&#xff0c;有些人听了也用了&#xff0c;效果不错&#xff0c;有些人看了就忘了&#xff0c;主要是不知道用它干嘛&#xff0c;其实语音转文字的软件主要功能就是为了让自己在写作的时候可以减少时间&#xff0c;提高效率&#xff0c;其…

野火stm32呼吸灯程序_说一说STM32启动过程

STM32上电后是怎么启动的&#xff1f;main函数之前单片机都做了些什么&#xff1f;带着这些疑问我们开始进入游戏。。。。。首先&#xff0c;开局一张图&#xff0c;过程全靠编&#xff0c;如有说错的地方望能指正启动大致流程1- 上电启动或者硬件复位2- 单片机从0x00地址开始执…

apache启动失败_请检查相关配置.√mysql5.1已启动._1、Apache启动失败,请检查相关配置-百度经验...

前几天电脑系统崩溃了,后边到服务中心重新恢复了系统,但是回来使用APMServ 5.2.6发现:1、Apache启动失败,请检查相关配置。√MySQL5.1已启动。系统的各种服务我都检查过了,都是正常开启的,百思不得其解,后边在百度上搜索一篇文章有个例子照做了以后结果成功了。---------------…

职业规划纵向横向_收下这份《职业规划喂饭式指南》

果不其然&#xff01;上篇文章发布后&#xff0c;我收到了被拿来举反例的网友小哥的抗议~~~讲道理&#xff0c;最后他拿到的Offer还是十分不错的&#xff0c;从此以后我的朋友圈又多了一位第一手保真瓜主&#xff0c;他好我也好~那么本期《职业规划喂饭式指南》来喽&#xff01…

javascript字典中添加数组_如何在 JavaScript 中更好地使用数组

在 freeCodeCamp 社区阅读原文。本文短小精悍&#xff0c;我保证。在过去的数个月里&#xff0c;我注意到在我审阅的 pull request 中有四个&#xff08;关于数组使用的&#xff09;错误经常出现。同时&#xff0c;我自己也会犯这些错误&#xff0c;因此有了这篇文章。让我们一…

mysql join图解_MySQL中Join算法实现原理分析[多图]

在MySQL 中&#xff0c;只有一种 Join 算法&#xff0c;就是大名鼎鼎的 Nested Loop Join&#xff0c;他没有其他很多数据库所提供的 Hash Join&#xff0c;也没有 Sort Merge Join。顾名思义&#xff0c;Nested Loop Join 实际上就是通过驱动表的结果集作为循环基础数据&#…

mysql多线程使用一个链接_探索多线程使用同一个数据库connection的后果

在项目中看到有用到数据库的连接池&#xff0c;心里就思考着为什么需要数据库连接池&#xff0c;只用一个连接会造成什么影响?(只用一个connection)?1 猜想:jdbc的事务是基于connection的&#xff0c;如果多线程共用一个connection&#xff0c;会造成多线程之间的事务相互干…

vs中四点画矩形的算法_中考热点,初高中衔接之倒角利器四点共圆

初中数学课程标准修改后&#xff0c;教材中四点共圆知识已经删除掉了&#xff0c;但这样一件强悍且使用简单的武器&#xff0c;我们还是有必要去了解的&#xff0c;近年来对于压轴题以几何为核心的考区来说&#xff0c;有时用到解题更为简洁方便&#xff0c;由此应该理解掌握。…

phpnow mysql字符集_使用PHPnow搭建本地PHP环境+创建MySQL数据库

要想学习WordPress建站&#xff0c;在本地搭建PHP环境是十分必要的&#xff0c;在以后的建站日子里&#xff0c;你可以使用这个环境来进行wordpress的程序学习、调试等工作&#xff0c;等你熟悉了wordpress以后&#xff0c;再购买域名和空间&#xff0c;真正开始你的建站之旅。…

wps如何保存最终状态_如何使得打开word文件显示最终的修改状态

展开全部 在日常工作中,经常为了保护文档而将其设置成最e68a84e8a2ad3231313335323631343130323136353331333363376366终状态,设置文档为最终状态,则是表示已完成这篇文档的编辑,这是文档的最终版本。如果文档被标记为最终状态,则状态属性将设置为“最终状态”,并且将禁用…

python整数反转_敲代码学Python:力扣简单算法之整数反转

学习重点&#xff1a;整数逆序算法力扣&#xff08;LeetCode&#xff09;原题​leetcode-cn.com 功能&#xff1a;整数反转 来源&#xff1a;https://leetcode-cn.com/explore/featured/card/top-interview-questions-easy/5/strings/33/ 重点&#xff1a;整数逆序算法 作者&am…

前端累加nan怎么解决_前端面试,你有必要知道的一些JavaScript 面试题(上)

1.使用 typeof bar “object” 判断 bar 是不是一个对象有神马潜在的弊端&#xff1f;如何避免这种弊端&#xff1f;使用 typeof 的弊端是显而易见的(这种弊端同使用 instanceof)&#xff1a;let obj {};let arr [];console.log(typeof obj object); //trueconsole.log(typ…

tidb 配置mysql数据源_安装tidb数据库

1.下载压缩包安装tar包路径命令&#xff1a;wget http://download.pingcap.org/tidb-latest-linux-amd64.tar.gz命令&#xff1a;wget http://download.pingcap.org/tidb-latest-linux-amd64.sha2562.检查文件完整性命令&#xff1a;sha256sum -c tidb-latest-linux-amd64.sha2…

linuxos或sv独立客户端不支持应用程序打开方式_搞不明白为什么大家都在学习 k8s

作者 | 小明菜市场来源 | 小明菜市场(ID&#xff1a;fileGeek)头图 | CSDN 下载自东方IC前言都2020年了&#xff0c;你还不知道kubernetes就真的真的真的out啦。(贩卖焦虑体) 什么是k8s&#xff0c;k8s这个词来自于希腊语&#xff0c;有主管&#xff0c;舵手&#xff0c;船长的…