python – OpenCV打开/关闭移动像素的位置

我目前正在使用OpenCV 2.4对二进制图像进行形态转换

我只是注意到使用OpenCV的内置函数,我所有像素的位置都向右和向下移动一个(即先前位于(i,j)的像素现在位于(i 1,j 1))

import cv2
import numpy as np
from skimage.morphology import opening

image = cv2.imread('input.png', 0)
kernel = np.ones((16,16), np.uint8)

opening_opencv = cv2.morphologyEx(image, cv2.MORPH_OPEN, kernel)

opening_skimage = opening(image, kernel)

cv2.imwrite('opening_opencv.png', opening_opencv)
cv2.imwrite('opening_skimage.png', opening_skimage)

输入:

输出:

由于我不明白为什么,我只是使用skimage绑定相同的操作,并且它在形态转换期间没有形成这个“间隙”.

输出:

对这个问题有什么看法吗?

谢谢 !

最佳答案 这是你评论的方式,但确切的反过来:)

具有均匀尺寸的结构元素导致移位,没有中间像素.对于奇数尺寸,您可以获得中间像素和每个尺寸的(n-1)/ 2像素.

另一种说法是,具有奇数尺寸的SE是对称的,并且偶数尺寸是不对称的.

点赞