图像处理中去除背景是一个很经典的话题。比如在图像识别中,就需要去除背景,保留感兴趣的部分。去除背景的算法有:
1)掩膜进行位运算
2)使用grabcut
3)边缘提取
4)轮廓检测+填充法
5)使用HSV颜色空间颜色区域提取的方法,提取出前景或者背景。
更多的描述,大家可以参考提取前景方法 一文
首先实现第一种情况,也是最简单的情况:单一颜色背景。所谓单一颜色背景的颜色并不是一种,因为相近的颜色很多。好在这些可以通过算法加以区别。一种简单的方法是使用cv2.threshold获取背景的颜色。方法如下:
- 读取图片
- 将像素转换为灰度值
- 用cv2.threshold提取背景颜色
- 获取连通域
- 生成掩膜
- 用掩膜进行位操作,去除背景
import cv2
import numpy as np
def method_1(img_src):
# 灰度处理
img_gray = cv2.cvtColor(img_src, cv2.COLOR_BGR2GRAY)
ret