为什么MATLAB imclose和opencv Python MORPH_CLOSE显示不同的输出?

问题描述 投票:0回答:1

我试图将一些MATLAB代码转换为与某些图像处理相关的python代码。当我在MATLAB中用7的圆盘形状封闭时,原始二进制图像中的孔被填充了,看起来不错。但是,当我在内核大小为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)

这是我的输入图像

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9QQUNjWi5qcGcifQ==” alt =“这是我的输入图像”>“>

这是我的MATLAB输出图像

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9uaDVwcy5qcGcifQ==” alt =“这是mu MATLAB输出图像”>“>

这是我的Python输出图像

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9OY1g5Ny5qcGcifQ==” alt =“这是我的python输出图像”>

为什么输出在MATLAB和python中不同,即使步骤相同。有人可以帮我吗?我想要一个输出图像,没有来自python代码的孔(不改变对象的形状)。内核大小超过10可能会堵塞孔,但会改变我的原始图像形状

我试图将一些MATLAB代码转换为与某些图像处理相关的python代码。当我在MATLAB中以7的圆盘形状封闭时,原始二进制图像中的孔是...

python matlab opencv
1个回答
0
投票

[世界汇款和Wave帐户管理,并更新信用评分。下载并注册至少100美元的世界汇款或Wave帐户存款。我们将帮助您使用访问代码管理帐户,并保证每隔一天您的信用评分为5000 $。这笔钱将直接存入您的wave帐户。通过以下方式与我们联系:[email protected]或+1(520)800-6528

© www.soinside.com 2019 - 2024. All rights reserved.