我试图将一些MATLAB代码转换为Python代码,这些代码与一些图像处理相关
当我在MATLAB中用7的圆盘形状做imclose
时,原始二值图像中的洞被填满了,看起来不错。但是当我用一个内核大小为7的椭圆对同一个二值图像进行MORPH_CLOSE
时,这个洞并没有闭合。为什么会这样
这是MATLAB代码:
cmask = imread('image.jpeg');
cm = imclose(im2bw(cmask),strel('disk',7));
这是我的Python代码,对应于上面的MATLAB代码:
import cv2 as cv
cmask=cv.imread('image.jpeg')
gray = cv2.cvtColor(cmask, cv2.COLOR_BGR2GRAY)
_,bwcmask = cv2.threshold(gray, 127,255, cv2.THRESH_BINARY)
kernel_7=cv2.getStructuringElement(cv2.MORPH_ELLIPSE,(7,7))
cm = cv2.morphologyEx(bwcmask, cv2.MORPH_CLOSE, kernel_7)
这是我的输入图像:
这是我的MATLAB输出图像:
这是我的Python输出图像:
这是python中内核大小为11的输出图像
为什么MATLAB和Python中的输出不同,即使步骤相同?我想要Python代码中没有孔的输出图像(不改变对象的形状)。内核大小超过10可以填补这个漏洞,但它改变了我原来的图像形状
目前没有回答
相关问题 更多 >
编程相关推荐