Python OpenCV真香——去除照片白色背景

简介: Python OpenCV真香——去除照片白色背景

最近帮别人做了个图像分类的项目,他告诉我就是个二分类,区分有没有瑕疵,我想这简单就接了。

 我理想中的图片是这样的:

tt.png

然而现实中的图片确是这样的:


tt.png


这个不算夸张,还有更夸张的,物体占比非常小,大片的白色背景上还有一些污渍。


这给分类造成了很大的困扰,所以第一步是要把背景去掉,废话不多说,直接上代码。


import cv2

import numpy as np

img=cv2.imread('01.jpg')

## (1) Convert to gray, and threshold

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

print(gray)


#二值化,将背景150到255的像素值改为255

th, threshed = cv2.threshold(gray, 150, 255, cv2.THRESH_BINARY_INV)

## (2) Morph-op to remove noise

kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (11,11))

morphed = cv2.morphologyEx(threshed, cv2.MORPH_CLOSE, kernel)

## (3) Find the max-area contour

cnts = cv2.findContours(morphed, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)[-2]

cnt = sorted(cnts, key=cv2.contourArea)[-1]

## (4) Crop and save it

x,y,w,h = cv2.boundingRect(cnt)


#取反色,删除背景的影响。

dst = 255-img[y:y+h, x:x+w]

cv2.imwrite("001.png", dst)


结果:


tt.png

tt.png

目录
相关文章
|
2月前
|
计算机视觉 Windows Python
windows下使用python + opencv读取含有中文路径的图片 和 把图片数据保存到含有中文的路径下
在Windows系统中,直接使用`cv2.imread()`和`cv2.imwrite()`处理含中文路径的图像文件时会遇到问题。读取时会返回空数据,保存时则无法正确保存至目标目录。为解决这些问题,可以使用`cv2.imdecode()`结合`np.fromfile()`来读取图像,并使用`cv2.imencode()`结合`tofile()`方法来保存图像至含中文的路径。这种方法有效避免了路径编码问题,确保图像处理流程顺畅进行。
170 1
|
11天前
|
数据安全/隐私保护 计算机视觉 Python
用python给照片添加水印的三种方式
这篇文章介绍了使用Python给照片添加水印的三种方式:通过PIL库直接添加文本水印、使用OpenCV库结合图像处理功能添加水印,以及使用filestools库进行更为简便的水印添加。
18 7
|
8天前
|
机器学习/深度学习 计算机视觉 Python
opencv环境搭建-python
本文介绍了如何在Python环境中安装OpenCV库及其相关扩展库,包括numpy和matplotlib,并提供了基础的图像读取和显示代码示例,同时强调了使用Python虚拟环境的重要性和基本操作。
|
2月前
|
算法 计算机视觉 Python
python利用opencv进行相机标定获取参数,并根据畸变参数修正图像附有全部代码(流畅无痛版)
该文章详细介绍了使用Python和OpenCV进行相机标定以获取畸变参数,并提供了修正图像畸变的全部代码,包括生成棋盘图、拍摄标定图像、标定过程和畸变矫正等步骤。
python利用opencv进行相机标定获取参数,并根据畸变参数修正图像附有全部代码(流畅无痛版)
|
2月前
|
存储 编解码 API
python多种方法压缩图片,opencv、PIL、tinypng、pngquant压缩图片
python多种方法压缩图片,opencv、PIL、tinypng、pngquant压缩图片
47 1
|
2月前
|
算法 定位技术 vr&ar
一文了解PnP算法,python opencv中的cv2.solvePnP()的使用,以及使用cv2.sovlePnP()方法标定相机和2D激光雷达
一文了解PnP算法,python opencv中的cv2.solvePnP()的使用,以及使用cv2.sovlePnP()方法标定相机和2D激光雷达
148 0
一文了解PnP算法,python opencv中的cv2.solvePnP()的使用,以及使用cv2.sovlePnP()方法标定相机和2D激光雷达
|
2月前
|
机器学习/深度学习 人工智能 监控
利用Python和OpenCV实现实时人脸识别系统
【8月更文挑战第31天】本文将引导您了解如何使用Python结合OpenCV库构建一个简易的实时人脸识别系统。通过分步讲解和示例代码,我们将探索如何从摄像头捕获视频流、进行人脸检测以及识别特定个体。本教程旨在为初学者提供一条明晰的学习路径,帮助他们快速入门并实践人脸识别技术。
|
3月前
|
机器学习/深度学习 数据采集 算法
Python基于OpenCV和卷积神经网络CNN进行车牌号码识别项目实战
Python基于OpenCV和卷积神经网络CNN进行车牌号码识别项目实战
138 19
|
3月前
|
机器学习/深度学习 算法 TensorFlow
|
1天前
|
机器学习/深度学习 Linux Python
Python编程教学
Python教学
24 13
下一篇
无影云桌面