我正在尝试删除下图中的蓝色背景色。
蓝色可以是浅色也可以是深蓝色。
我尝试使用 cv2.inRange() 函数但失败了。
我怎样才能做到这一点?

python - 如何使用 OpenCV 去除图像上的蓝色背景色?-LMLPHP

import sys
import cv2
import numpy as np

image = cv2.imread(sys.argv[1])

hsv = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)

lower_blue = np.array([85, 50, 40])
upper_blue = np.array([135, 255, 255])

mask = cv2.inRange(hsv, lower_blue, upper_blue)

image[mask>0]=(255, 255, 255)

cv2.imshow('image',image)
cv2.waitKey(0)

最佳答案

python - 如何使用 OpenCV 去除图像上的蓝色背景色?-LMLPHP

您可以尝试阈值化以获得二值图像和形态变换以平滑文本

import cv2

image = cv2.imread('1.png')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
thresh = cv2.threshold(gray,105, 255, cv2.THRESH_BINARY_INV)[1]
thresh = 255 - thresh

kernel = cv2.getStructuringElement(cv2.MORPH_RECT, (3,3))
result = cv2.morphologyEx(thresh, cv2.MORPH_OPEN, kernel, iterations=1)

cv2.imshow('thresh', thresh)
cv2.imshow('result', result)
cv2.imwrite('result.png', result)
cv2.waitKey()

关于python - 如何使用 OpenCV 去除图像上的蓝色背景色?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56867595/

10-12 21:21