opencv+python用背景减去法抠图

opencv+python用背景减去法抠图

import cv2

from matplotlib import pyplot as plt

import numpy as np

imA=cv2.imread("target.png")

plt.imshow(cv2.cvtColor(imA,cv2.COLOR_BGR2RGB))

imA.shape #(2436, 1125, 3)

imBG=cv2.imread("bg_30061.jpg")

plt.imshow(cv2.cvtColor(imBG,cv2.COLOR_BGR2RGB))

# Step 1 预处理

# 日常缩放图像,背景图要缩放到和图A意一样大

imBG=cv2.resize(imBG,(1125,2436),interpolation=cv2.INTER_CUBIC)

# 后续代码都是基于灰度图像操作的

imA_gray=cv2.cvtColor(imA,cv2.COLOR_BGR2GRAY)

imBG_gray=cv2.cvtColor(imBG,cv2.COLOR_BGR2GRAY)

# 背景减去

sub=imBG_gray.astype("int32")-imA_gray.astype("int32")

sub=np.absolute(sub).astype("uint8")

plt.imshow(cv2.cvtColor(sub,cv2.COLOR_BGR2RGB))

# Step 2 二值化图像

thresh=cv2.adaptiveThreshold(sub,255,cv2.ADAPTIVE_THRESH_GAUSSIAN_C,cv2.THRESH_BINARY,19,5)

## 图像二值化有很多种方法, adaptiveThreshold 是基于局部的,最后两个参数,19,5 决定了边缘检测的清晰度

thresh=cv2.erode(thresh,None,iterations=2)

thresh=cv2.dilate(thresh,None,iterations=2)

# 膨胀腐蚀,主要是消去噪声点,同时边缘封闭(边缘不封闭,无法完全填充)

plt.figure(num="thresh")

plt.imshow(cv2.cvtColor(thresh,cv2.COLOR_BGR2RGB))

plt.close

# Step 3 边缘检测

cnts,hierarchy=cv2.findContours(thresh.copy(),cv2.RETR_TREE,cv2.CHAIN_APPROX_NONE)

len(cnts)

area=[]

for i in cnts:

cnt_area = cv2.contourArea(i)

area.append(cnt_area)

# 通过面积大小,找到需要的边缘的 index,这里为 866

mask=np.zeros([2436,1125],dtype=np.uint8)

mask[:,:]=255

res=cv2.drawContours(mask,cnts,866,(0,0,225),2)

plt.imshow(cv2.cvtColor(res,cv2.COLOR_BGR2RGB))

# 画出边缘

# 填充轮廓并制作掩模

mask2=np.zeros([2436,1125],dtype=np.uint8)

mask2[:,:]=0

res2=cv2.drawContours(mask2,cnts,866,255,cv2.FILLED)

plt.imshow(cv2.cvtColor(res2,cv2.COLOR_BGR2RGB))

# 保存为 png

h,w,c=imA.shape

b,g,r=cv2.split(imA)

imA_2=np.zeros((4,h,w),dtype=imA.dtype)

imA_2[0][0:h,0:w]=b

imA_2[1][0:h,0:w]=g

imA_2[2][0:h,0:w]=r

imA_2[3][0:h,0:w]=mask2

imA_new=cv2.merge(imA_2)

cv2.imwrite("imA_new.png",imA_new)

opencv+python用背景减去法抠图相关教程

python opencv 边缘检测 抠图,opencv+python用背景减去法抠图相关推荐

  1. python图像边缘检测_python opencv实现图像边缘检测

    本文利用python opencv进行图像的边缘检测,一般要经过如下几个步骤: 1.去噪 如cv2.GaussianBlur()等函数: 2.计算图像梯度 图像梯度表达的是各个像素点之间,像素值大小的 ...

  2. python图像边缘检测_使用python获取图像中形状的轮廓(x,y)坐标

    我需要使用python获得下面图像的轮廓坐标(x,y)的矩阵.使用python获取图像中形状的轮廓(x,y)坐标 我尝试用OpenCV的精明探测器和发现的轮廓,但我得到了很多的轮廓,我不知道如何让一个 ...

  3. Python利用paddlehub实现批量抠图和更换证件照背景底色

    Python利用paddlehub实现批量抠图和更换证件照背景底色,图片使用卓别林的个人肖像,代码来源抠图功能实现的博客.代码做了一些更改已实现蓝底背景功能,并实现边界框图提取. import os ...

  4. 《OpenCv视觉之眼》Python图像处理十六:Opencv图像处理实战一之图像中的硬币检测

    本专栏主要介绍如果通过OpenCv-Python进行图像处理,通过原理理解OpenCv-Python的函数处理原型,在具体情况中,针对不同的图像进行不同等级的.不同方法的处理,以达到对图像进行去噪.锐 ...

  5. opencv 轻松入门 面向python pdf_OpenCV轻松入门:面向Python

    OpenCV轻松入门:面向Python,由电子工业出版社在2019-05-01月出版发行,本书编译以及作者信息为: 李立宗 著,这是第1次发行, 国际标准书号为:9787121362903,品牌为电子 ...

  6. 【python第三方库】opencv库常用方法和属性

    文章目录 一.opencv总览 应用领域 1.计算机视觉领域方向 2.计算机操作底层技术 二.常用操作 安装 1. 图片加载.显示和保存 2. 图像显示窗口创建与销毁 3. 图片的常用属性的获取 4. ...

  7. 用python进行抠图,去除图像背景干扰

    为了让我们后续的应用更加专注于目标,我们需要把目标从图像中抠出来,以便于后续的使用.比如我们要识别汽车车身的颜色,首先要把车周围背景过滤,然后再进行车身颜色像素统计. 实现抠图有两种方式,第一种是比较 ...

  8. 《OpenCv视觉之眼》Python图像处理六 :Opencv图像傅里叶变换和傅里叶逆变换原理及实现

    本专栏主要介绍如果通过OpenCv-Python进行图像处理,通过原理理解OpenCv-Python的函数处理原型,在具体情况中,针对不同的图像进行不同等级的.不同方法的处理,以达到对图像进行去噪.锐 ...

  9. Python的图像处理库(OpenCV,PIL,matplotlib和scikit-image)

      目前接触过的python图像处理代码涉及到多种的图像库,其中最常用的当属opencv和PIL.惭愧的是,以前只是拿来用,却一直迷惑为什么不同的代码会选择不同的图像库.这些图像库的联系和区别又是什么 ...

最新文章

  1. 给迷茫的程序员一些中肯建议,你还在虚度光阴吗?
  2. 在asp.net mvc中使用PartialView返回部分HTML段
  3. python设计一个学生类求最高分_设计一个学生类班级类
  4. DAO层使用泛型的两种方式
  5. python线程与进程
  6. 视音频数据处理入门:UDP-RTP协议解析
  7. 影响员工敬业度的三大因素
  8. POJ 3225 - 区间
  9. matlab连续型随机变量,matlab连续型随机变量的分布.doc
  10. com.android.pngp.tln,Android资源之图像资源(图像级别资源)
  11. Linux 视频教程学习资源
  12. DELL 笔记本 触摸板 驱动安装 与 禁用启动
  13. 怎么把PDF转换成JPG图片?这个方法你了解吗
  14. 使用excel计算空气质量指数AQI,空气质量分指数IAQI等
  15. java 释放锁_Java并发编程:锁的释放
  16. XYplorer 21.50.0100多语言版,资源管理器件之一
  17. html显示svg图片,HTML5/CSS3系列教程:使用SVG图片
  18. qcc302x qcc303x qcc512x TWS earbud通用操作说明 及体验软件
  19. 换皮后贴吧玩家反馈整理
  20. 抖音帐号如何避免播放量限流、降权和封号

热门文章

  1. 部署Kubernetes集群-1.18.6版本
  2. 托管代码与非托管代码之间的交互
  3. php mq死信队列,【RabbitMQ 实战指南】一 死信队列
  4. 谁能逗笑1860话务小姐
  5. 600分理科选计算机专业,女孩子理科成绩600分左右,但是性格内向,可以选择什么专业呢?...
  6. python3.0什么时候出的_Python 3.X简史——记录3.0之后的重要更新
  7. C++模拟化学物质合成程序《化学家》V1.0.5
  8. Java中switch的三种用法方式
  9. android开发:listView优化
  10. python 组织结构树_如何使用Python绘制组织树图?