如何删除此图像的特定颜色?
How can I remove especific color of this image?
我想删除图像的所有米色 Brain Image,从而得到其他颜色(棕色、绿色、黄色和红色)。我尝试使用删除白色背景的相同代码来执行此操作,仅修改 RGB 代码,但没有成功。
(抱歉,如果在 post 上犯了一些错误)
import cv2
import numpy as np
# Read image
img = cv2.imread(r'D:\PY\mk1\mk1\sagitale1.png')
hh, ww = img.shape[:2]
# threshold on white
# Define lower and uppper limits
lower = np.array([101, 69, 51])
upper = np.array([255, 171, 142])
# Create mask to only select black
thresh = cv2.inRange(img, lower, upper)
# apply morphology
kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(20,20))
morph = cv2.morphologyEx(thresh, cv2.MORPH_CLOSE, kernel)
# invert morp image
mask = 255 - thresh
# apply mask to image
result = cv2.bitwise_and(img, img, mask=mask)
# save results
cv2.imwrite('1_thresh.jpg', thresh)
cv2.imwrite('1_result.jpg', result)
cv2.imshow('result', result)
cv2.waitKey(0)
cv2.destroyAllWindows()
你的颜色顺序相反。 OpenCV 按 B、G、R 顺序使用颜色。你需要稍微改变你的范围。你也不需要形态学。
所以以下内容对我来说 Python/OpenCV。
输入:
import cv2
import numpy as np
# Read image
img = cv2.imread('brain.png')
hh, ww = img.shape[:2]
# threshold on white
# Define lower and uppper limits
lower = np.array([90, 120, 200])
upper = np.array([170, 200, 255])
# Create mask to only select black
thresh = cv2.inRange(img, lower, upper)
# invert threshold image
mask = 255 - thresh
# apply mask to image
result = cv2.bitwise_and(img, img, mask=mask)
# save results
cv2.imwrite('1_thresh.jpg', thresh)
cv2.imwrite('1_result.jpg', result)
cv2.imshow('thresh', thresh)
cv2.imshow('mask', mask)
cv2.imshow('result', result)
cv2.waitKey(0)
cv2.destroyAllWindows()
阈值图像:
结果:
我想删除图像的所有米色 Brain Image,从而得到其他颜色(棕色、绿色、黄色和红色)。我尝试使用删除白色背景的相同代码来执行此操作,仅修改 RGB 代码,但没有成功。 (抱歉,如果在 post 上犯了一些错误)
import cv2
import numpy as np
# Read image
img = cv2.imread(r'D:\PY\mk1\mk1\sagitale1.png')
hh, ww = img.shape[:2]
# threshold on white
# Define lower and uppper limits
lower = np.array([101, 69, 51])
upper = np.array([255, 171, 142])
# Create mask to only select black
thresh = cv2.inRange(img, lower, upper)
# apply morphology
kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(20,20))
morph = cv2.morphologyEx(thresh, cv2.MORPH_CLOSE, kernel)
# invert morp image
mask = 255 - thresh
# apply mask to image
result = cv2.bitwise_and(img, img, mask=mask)
# save results
cv2.imwrite('1_thresh.jpg', thresh)
cv2.imwrite('1_result.jpg', result)
cv2.imshow('result', result)
cv2.waitKey(0)
cv2.destroyAllWindows()
你的颜色顺序相反。 OpenCV 按 B、G、R 顺序使用颜色。你需要稍微改变你的范围。你也不需要形态学。
所以以下内容对我来说 Python/OpenCV。
输入:
import cv2
import numpy as np
# Read image
img = cv2.imread('brain.png')
hh, ww = img.shape[:2]
# threshold on white
# Define lower and uppper limits
lower = np.array([90, 120, 200])
upper = np.array([170, 200, 255])
# Create mask to only select black
thresh = cv2.inRange(img, lower, upper)
# invert threshold image
mask = 255 - thresh
# apply mask to image
result = cv2.bitwise_and(img, img, mask=mask)
# save results
cv2.imwrite('1_thresh.jpg', thresh)
cv2.imwrite('1_result.jpg', result)
cv2.imshow('thresh', thresh)
cv2.imshow('mask', mask)
cv2.imshow('result', result)
cv2.waitKey(0)
cv2.destroyAllWindows()
阈值图像:
结果: