Python 带OpenCV的阈值电阻带
因此,我试图制作一个神经网络,通过识别色带对电阻强度进行分类。在我进入这一步之前,我想使用OpenCV对除了电阻带之外的所有颜色设置阈值,这样神经网络就更容易分类了。然而,我不知道什么样的阈值类型最适合这种情况 我尝试了几种HLS、RGB和HSV,但它们都不能消除电阻器的背景 注意:我已经使用轮廓来去除背景,所以现在剩下的就是带有彩色线条的电阻器 在我的例子中,HLS去掉了颜色,但保留了电阻器背景,如下面的代码所示Python 带OpenCV的阈值电阻带,python,image,opencv,image-processing,vision,Python,Image,Opencv,Image Processing,Vision,因此,我试图制作一个神经网络,通过识别色带对电阻强度进行分类。在我进入这一步之前,我想使用OpenCV对除了电阻带之外的所有颜色设置阈值,这样神经网络就更容易分类了。然而,我不知道什么样的阈值类型最适合这种情况 我尝试了几种HLS、RGB和HSV,但它们都不能消除电阻器的背景 注意:我已经使用轮廓来去除背景,所以现在剩下的就是带有彩色线条的电阻器 在我的例子中,HLS去掉了颜色,但保留了电阻器背景,如下面的代码所示 frame\u HLS=cv2.cvtColor(屏蔽数据,cv2.COLOR\
frame\u HLS=cv2.cvtColor(屏蔽数据,cv2.COLOR\u BGR2HLS)
frame_threshold=cv2.inRange(frame_HLS,(50,0,0),(139149255))
这是原始图像和HLS输出的图像
因此,总的来说,我只是想知道是否有人知道其他颜色模式(如LUV)对此是否有效,或者我是否只需要使用轮廓或其他方法来分离它们。您的思路是正确的,颜色阈值是分割电阻的一种很好的方法。目前,阈值正在正确执行,您只需要执行几个简单的步骤来移除背景 我尝试了几种HLS、RGB和HSV,但它们都不能消除电阻器的背景 为了去除背景,我们可以使用
cv2.inRange()
生成的二进制掩码。我们只需使用cv2.bitwise_和()
result = cv2.bitwise_and(original, original, mask=frame_threshold)
result[frame_threshold==0] = (255,255,255)
这是你当前拥有的蒙版图像(左)和移除背景后的蒙版图像(右)
然而,我不知道什么样的阈值类型最适合这种情况
现在您正在使用颜色阈值,您可以继续使用此方法并在HLS、RGB或HSV颜色空间中的其他范围内进行实验。在所有这些情况下,可以通过将遮罩上的所有黑色像素转换为白色来移除背景。如果决定使用另一种阈值方法,请查看自动计算阈值的或
import cv2
image = cv2.imread('1.png')
original = image.copy()
frame_HLS = cv2.cvtColor(image, cv2.COLOR_BGR2HLS)
frame_threshold = cv2.inRange(frame_HLS, (50, 0, 0), (139, 149, 255))
result = cv2.bitwise_and(original, original, mask=frame_threshold)
result[frame_threshold==0] = (255,255,255)
cv2.imshow('result', result)
cv2.waitKey()