2
我尝试使用python程序做中值滤波。我得到这篇文章http://www.programming-techniques.com/2013/02/median-filter-using-c-and-opencv-image.html,所以我尝试将该代码翻译成python代码。用Python和OpenCV进行中值滤波
这在Python代码
from cv2 import * #Import functions from OpenCV
import cv2
if __name__ == '__main__':
source = cv2.imread("Medianfilterp.png", CV_LOAD_IMAGE_GRAYSCALE)
final = source[:]
for y in range(len(source)):
for x in range(y):
final[y,x]=source[y,x]
members=[source[0,0]]*9
for y in range(1,len(source)-1):
for x in range(1,y-1):
members[0] = source[y-1,x-1]
members[1] = source[y,x-1]
members[2] = source[y+1,x-1]
members[3] = source[y-1,x]
members[4] = source[y,x]
members[5] = source[y+1,x]
members[6] = source[y-1,x+1]
members[7] = source[y,x+1]
members[8] = source[y+1,x+1]
members.sort()
final[y,x]=members[4]
cv.NamedWindow('Source_Picture', cv.CV_WINDOW_AUTOSIZE)
cv.NamedWindow('Final_Picture', cv.CV_WINDOW_AUTOSIZE)
cv2.imshow('Source_Picture', source) #Show the image
cv2.imshow('Final_Picture', final) #Show the image
cv2.waitKey()
这是中值滤波前一个画面:
,但我得到了奇怪的结果,该方案的结果:
我只想学习如何做中值滤波,而不只是调用函数。谢谢..我没有注意到这一点。 ha ..ha ..解决了我的问题,但是,我遇到了新问题,当我把图片裁剪成一半时,它说的是outofbound。你知道为什么吗? –
@mas_bejo这可能是通过提出一个单独问题最好解决的问题。你的新问题需要更多的解释,评论并不是真正的地方。 – Aurelius
好的,谢谢你的帮助。可能是我会发布有关后者的问题... –