OpenCV Opening/Closing 移动像素的位置
OpenCV Opening/Closing shifts the positions of the pixels
我目前正在使用 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绑定了相同的操作,并且在形态转换过程中并没有"gap"。
输出:
对这个问题有什么想法吗?
谢谢!
这是你评论的方式,但恰恰相反:)
结构元素大小均匀导致偏移,没有中间像素。对于奇数大小,您会得到一个中间像素和每个大小的 (n-1)/2 个像素。
换句话说,奇数大小的 SE 是对称的,偶数大小的是不对称的。
我目前正在使用 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绑定了相同的操作,并且在形态转换过程中并没有"gap"。
输出:
对这个问题有什么想法吗?
谢谢!
这是你评论的方式,但恰恰相反:)
结构元素大小均匀导致偏移,没有中间像素。对于奇数大小,您会得到一个中间像素和每个大小的 (n-1)/2 个像素。
换句话说,奇数大小的 SE 是对称的,偶数大小的是不对称的。