Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.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 openCV3:在opencv中对图像进行形态学变换时未获得预期输出_Python_Opencv_Python 3.6_Opencv3.3 - Fatal编程技术网

Python openCV3:在opencv中对图像进行形态学变换时未获得预期输出

Python openCV3:在opencv中对图像进行形态学变换时未获得预期输出,python,opencv,python-3.6,opencv3.3,Python,Opencv,Python 3.6,Opencv3.3,我正在尝试对图像进行top-hat形态学变换,但由于某些原因没有得到预期的输出 # Top Hat: difference between input image and opening kernel = np.ones((5,5),np.float32)/25 tophat = cv2.morphologyEx(img, cv2.MORPH_TOPHAT, kernel) plt.subplot(121),plt.imshow(img, cmap='gray'),plt.title('Ori

我正在尝试对图像进行top-hat形态学变换,但由于某些原因没有得到预期的输出

# Top Hat: difference between input image and opening
kernel = np.ones((5,5),np.float32)/25 
tophat = cv2.morphologyEx(img, cv2.MORPH_TOPHAT, kernel)
plt.subplot(121),plt.imshow(img, cmap='gray'),plt.title('Original')
plt.xticks([]), plt.yticks([])
plt.subplot(122),plt.imshow(tophat, cmap='gray'),plt.title('Top Hat')
plt.xticks([]), plt.yticks([])
plt.show()
期待什么

我得到了什么


编辑:添加了内核。

是否需要规范化内核? 尝试从内核中删除25除法

形态核应该由1和0组成。因此,不需要标准化。它也适用于CV_8UC1型

kernel = cv2.getStructuringElement(cv2.MORPH_RECT, ksize=(9,9))
tophat = cv2.morphologyEx(image, cv2.MORPH_TOPHAT, kernel)
编辑:

有关详细信息,请阅读以下内容:


我看不出内核的价值。无论该变量的值是多少,您都会得到相同的结果吗?请上载您的输入文件并发布一个可运行的代码来更改内核值。更新了内核。我正在使用的图像:可能您需要调整内核的大小。图像的大小是多少?如果它太大,那么内核可能太小,因此不会对morp\u OPEN操作做任何操作。[TOP\u HAT=SRC\u IMG-morp\u OPEN]如果您的morp\u OPEN与SRC\u IMG相同,那么您的结果将是一张空白图像。一些文档将帮助您巩固从尝试删除到删除的要点,等等。你是对的——OP应该有一个uint8类型的二进制内核。这是可行的,但我可以知道这里到底发生了什么吗?