Python 如何删除这类黑色图像的背景?

Python 如何删除这类黑色图像的背景?,python,python-3.x,opencv,opencv-python,Python,Python 3.x,Opencv,Opencv Python,我想将图像背景更改为黑色。我尝试了一些代码,但不起作用,有时它会删除对象。此图像中的背景可能因位置而异。出于好奇,我是否需要进行机器学习来移除此类图像的背景以获得更好的效果 这是一个单独的话题。图像垫子是你正在寻找的东西。这用于将背景转换为黑色,将前景转换为白色(在本例中,您不必这样做)。查看这个网站,这里有所有最先进的matting算法,并尝试在您的代码中实现它。我会说这是一条很长的路,所以如果你提到去除图像背景后你到底打算做什么,我可以说是更好的解决方案。我不想将前景改为白色,我只想将背景

我想将图像背景更改为黑色。我尝试了一些代码,但不起作用,有时它会删除对象。此图像中的背景可能因位置而异。出于好奇,我是否需要进行机器学习来移除此类图像的背景以获得更好的效果


这是一个单独的话题。图像垫子是你正在寻找的东西。这用于将背景转换为黑色,将前景转换为白色(在本例中,您不必这样做)。查看这个网站,这里有所有最先进的matting算法,并尝试在您的代码中实现它。我会说这是一条很长的路,所以如果你提到去除图像背景后你到底打算做什么,我可以说是更好的解决方案。

我不想将前景改为白色,我只想将背景改为黑色,我计划使用GLCM检测植物病害,第一个设置是从图像中删除背景内容,并将图像压缩到颜色直方图,最后检查图像的纹理。您可以使用ur alpha matting代码中的一个小更改来完成此操作。您可以放置一个条件循环语句,表示每当您发现rgb值为[0,0,0](表示黑色)时,您什么也不做;每当您发现rgb值为[255255](表示白色)时,您放置原始图像的像素值。通过这种方法,您跳过了黑色像素,并将原始图像像素强加于白色像素。我可以这样做吗?我是python新手。如果你能向我推荐谢谢,那就太好了,这正是我所说的。看看那个问题,简洁明了,切中要害。
import numpy as np
import cv2

image =  cv2.imread(r'D:/IMG_6334.JPG')
r = 150.0 / image.shape[1]
dim = (150, int(image.shape[0] * r))
resized = cv2.resize(image, dim, interpolation=cv2.INTER_AREA)
lower_white = np.array([80, 1, 1],np.uint8) #lower hsv value
upper_white = np.array([130, 255, 255],np.uint8) #upper hsv value
hsv_img = cv2.cvtColor(resized,cv2.COLOR_BGR2HSV) #rgb to hsv color space
#filter the background pixels
frame_threshed = cv2.inRange(hsv_img, lower_white, upper_white) 

kernel = np.ones((5,5),np.uint8) 
#dilate the resultant image to remove noises in the background
#Number of iterations and kernal size will depend on the backgound noises size
dilation = cv2.dilate(frame_threshed,kernel,iterations = 2)
resized[dilation==255] = (0,0,0) #convert background pixels to black color
cv2.imshow('res', resized)
cv2.waitKey(0)