Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 带OpenCV的阈值电阻带_Python_Image_Opencv_Image Processing_Vision - Fatal编程技术网

Python 带OpenCV的阈值电阻带

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\

因此,我试图制作一个神经网络,通过识别色带对电阻强度进行分类。在我进入这一步之前,我想使用OpenCV对除了电阻带之外的所有颜色设置阈值,这样神经网络就更容易分类了。然而,我不知道什么样的阈值类型最适合这种情况

我尝试了几种HLS、RGB和HSV,但它们都不能消除电阻器的背景

注意:我已经使用轮廓来去除背景,所以现在剩下的就是带有彩色线条的电阻器

在我的例子中,HLS去掉了颜色,但保留了电阻器背景,如下面的代码所示

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()