作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我需要从图像背景中删除灰色图形,只需要在其上绘制符号。
这是我的代码使用morphologyEx来执行此操作,但没有删除背景中的整个灰色图形。
img_path = "images/new_drawing.png"
img = cv2.imread(img_path)
kernel = np.ones((2,2), dtype=np.uint8)
result = cv2.morphologyEx(img, cv2.MORPH_CLOSE, kernel, iterations=1)
cv2.imshow('Without background',result);
cv2.waitKey(0)
cv2.destroyAllWindows()
img = cv2.imread('images/new_drawing.png')
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
med_blur = cv2.medianBlur(gray_img, ksize=3)
_, thresh = cv2.threshold(med_blur, 190, 255, cv2.THRESH_BINARY)
blending = cv2.addWeighted(gray_img, 0.5, thresh, 0.9, gamma=0)
cv2.imshow("blending", blending);
最佳答案
你快到了...
我建议不要使用cv2.inRange
来“捕获”非灰色像素,而是建议使用cv2.inRange
来捕获要更改为白色的所有像素:
mask = cv2.inRange(hsv, (0, 0, 100), (255, 5, 255))
nzmask = cv2.inRange(hsv, (0, 0, 5), (255, 255, 255))
nzmask = cv2.erode(nzmask, np.ones((3,3)))
and
和mask
之间应用nzmask
操作:mask = mask & nzmask
mask
像素:new_img = img.copy()
new_img[np.where(mask)] = 255
import numpy as np
import cv2
img_path = "new_drawing.png"
img = cv2.imread(img_path)
hsv = cv2.cvtColor(img, cv2.COLOR_BGR2HSV)
mask = cv2.inRange(hsv, (0, 0, 100), (255, 5, 255))
cv2.imshow('mask before and with nzmask', mask);
# Build mask of non black pixels.
nzmask = cv2.inRange(hsv, (0, 0, 5), (255, 255, 255))
# Erode the mask - all pixels around a black pixels should not be masked.
nzmask = cv2.erode(nzmask, np.ones((3,3)))
cv2.imshow('nzmask', nzmask);
mask = mask & nzmask
new_img = img.copy()
new_img[np.where(mask)] = 255
cv2.imshow('mask', mask);
cv2.imshow('new_img', new_img);
cv2.waitKey(0)
cv2.destroyAllWindows()
关于python - 如何在OPENCV python中从图像中删除背景灰色图纸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61223862/
我是一名优秀的程序员,十分优秀!