用python写图像二值化,形态学处理,轮廓提取,抠图,抠出来的图为主体,对其更换背景在进行高斯模糊的代码(多主体)
时间: 2023-06-06 17:06:38 浏览: 181
好的,以下是使用Python对图像进行二值化、形态学处理、轮廓提取、抠图、更换背景和高斯模糊的代码:
```
import cv2
# 读入图像
image = cv2.imread('input_image.jpg')
# 将图像转为灰度
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
# 进行二值化处理
ret, thresh = cv2.threshold(gray, 127, 255, cv2.THRESH_BINARY)
# 进行形态学处理,膨胀操作
kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3,3))
dilated = cv2.dilate(thresh, kernel, iterations=2)
# 进行轮廓提取
contours, hierarchy = cv2.findContours(dilated, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
# 对每个轮廓进行抠图
for cnt in contours:
x,y,w,h = cv2.boundingRect(cnt)
roi = image[y:y+h, x:x+w]
cv2.imwrite('roi.jpg', roi)
# 更换背景
background = cv2.imread('background.jpg')
background = cv2.resize(background, (w,h))
background_roi = background[y:y+h, x:x+w]
# 将抠图与更换的背景合并
result = cv2.add(background_roi, roi)
# 进行高斯模糊
blur = cv2.GaussianBlur(result, (15,15), 0)
# 将合并后的图像复制到原图中
image[y:y+h, x:x+w] = blur
# 保存结果
cv2.imwrite('result.jpg', image)
```
这段代码可以将输入图像进行二值化、形态学处理、轮廓提取、抠图、更换背景和高斯模糊,最终输出处理后的图像。请注意,本段代码是示例代码,可能不足以处理所有情况,需要根据实际情况进行修改。
阅读全文