用OpenCV在python中显示孔洞填充图像
我正在使用OpenCV在python中进行一些图像分析。我想显示我使用scipy.ndimage.binary_filled_holes填充的图像。在这样做的时候,当我使用cv2.imshow时,我看不到任何显示,所以我使用plt.imshow,看到原始图像中的孔被填满了。我想使用cv2.imshow功能来显示图像。我确实转换了图像,使数据类型为uint8,但仍然没有显示任何内容。任何帮助都将不胜感激用OpenCV在python中显示孔洞填充图像,python,numpy,opencv,image-processing,scipy,Python,Numpy,Opencv,Image Processing,Scipy,我正在使用OpenCV在python中进行一些图像分析。我想显示我使用scipy.ndimage.binary_filled_holes填充的图像。在这样做的时候,当我使用cv2.imshow时,我看不到任何显示,所以我使用plt.imshow,看到原始图像中的孔被填满了。我想使用cv2.imshow功能来显示图像。我确实转换了图像,使数据类型为uint8,但仍然没有显示任何内容。任何帮助都将不胜感激 import cv2 import matplotlib.pyplot as plt imp
import cv2
import matplotlib.pyplot as plt
import numpy as np
import scipy.ndimage
img = cv2.imread('Funky 647.jpg', cv2.IMREAD_GRAYSCALE)
dst = cv2.fastNlMeansDenoising(img,None,10,7,21)
ret, thresh2 = cv2.threshold(dst, 40, 255, cv2.THRESH_BINARY)
hole_filled= np.uint8(scipy.ndimage.binary_fill_holes(thresh2))
# plt.imshow(hole_filled)
cv2.imshow('No Holes', hole_filled)
cv2.waitKey(0)
cv2.destroyAllWindows()
通过matplotlib填充孔的图像:
如果您尝试使用
cv2.imshow('No Holes',img)
,会发生什么?i、 e.imshow能正常工作吗?读入图像显示完美。这就是我所困惑的。即使我对图像进行去噪和阈值化处理,cv2.imshow仍然有效。只有在使用ndimage功能后,图像才停止显示。我现在只看到一个黑屏。当你说“什么都没有显示”时,你是指“什么都没有”还是指“一个有黑色图片的窗口显示”?一个有黑色图片的窗口。很抱歉出现歧义。您的二进制填充图像可能在0到1的范围内。如果在0到1范围内,则检查其最小值和最大值。然后将其乘以255,然后转换为uint8如果您尝试cv2.imshow('No Holes',img)
,会发生什么?i、 e.imshow能正常工作吗?读入图像显示完美。这就是我所困惑的。即使我对图像进行去噪和阈值化处理,cv2.imshow仍然有效。只有在使用ndimage功能后,图像才停止显示。我现在只看到一个黑屏。当你说“什么都没有显示”时,你是指“什么都没有”还是指“一个有黑色图片的窗口显示”?一个有黑色图片的窗口。很抱歉出现歧义。您的二进制填充图像可能在0到1的范围内。如果在0到1范围内,则检查其最小值和最大值。然后将其乘以255,然后转换为uint8