如何使用Python+OpenCV去除图像中手部周围的黑点?
OpenCV手绘风格图像处理方案
我用Python的OpenCV捕获图像,想要把原图处理成类似目标图的手绘风格效果:
原图

目标效果

目前我使用的图像处理代码达不到预期效果,代码如下:
# Image Processing gray = cv2.cvtColor(roi, cv2.COLOR_BGR2GRAY) blur = cv2.GaussianBlur(gray, (51,51), 15) th3 = cv2.adaptiveThreshold(gray, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY_INV, 11, 2) ret, test_image = cv2.threshold(th3, 10, 255, cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU)
改进实现代码
要匹配目标图的手绘风格,我们可以通过灰度图与模糊图的差值提取纹理,再反转颜色实现效果,代码如下:
import cv2 import numpy as np def get_hand_drawing_style(roi): # 转为灰度图 gray = cv2.cvtColor(roi, cv2.COLOR_BGR2GRAY) # 高斯模糊柔化背景,核大小可根据图像尺寸调整 blur = cv2.GaussianBlur(gray, (21, 21), 0) # 计算灰度图与模糊图的比值,突出纹理边缘 diff = cv2.divide(gray, blur, scale=256) # 反转颜色,匹配目标图的黑白风格 result = cv2.bitwise_not(diff) return result # 使用示例 # processed_img = get_hand_drawing_style(roi) # cv2.imshow("Hand Drawing Style", processed_img) # cv2.waitKey(0) # cv2.destroyAllWindows()
代码说明
- 高斯模糊的核大小
(21,21)可按需调整,核越大背景柔化效果越明显; cv2.divide操作能强化图像的线条纹理,模拟手绘的笔触感;- 最后反转颜色得到深色线条+浅色背景的效果,和目标图风格一致。
内容的提问来源于stack exchange,提问作者ROCKY 007
相关产品推荐
相关产品推荐

