Tiff中值过滤器导出为单帧OpenCV Python



我正在尝试让一个程序在60帧的序列上运行(在tiff文件中(,并应用降噪滤波器(中值(,以便在分析之前对帧进行一点清理。然而,我的程序(逐帧处理(将输出单帧tiff;为什么?我该怎么办?

from PIL import Image
import cv2
import numpy as np
im = Image.open('example_recording.tif').convert('L')
im.save('greyscale_example.tif') #converts to greyscale
width,height = im.size
image_lookup = 0
class ImageSequence:
    def __init__(self, im):
        self.im = im
    def __getitem__(self, ix):
        try:
            if ix:
                self.im.seek(ix)
            return self.im
        except EOFError:
        raise IndexError # if end of sequence
for frame in ImageSequence(im):
        imarray = np.array(frame)
        Blur = cv2.medianBlur(imarray,5)
        frame = Image.fromarray(Blur)
im.save('corrected.tif')

我认为您没有正确地重新组成最终堆栈(上面没有显示?(,并保存一帧(最后一帧(?

另一种选择是放弃OpenCV并使用scipy:

import numpy
import scipy
from scipy import ndimage
a = numpy.random.randint(0,255,(100,100,60))
a.shape
#(100L, 100L, 60L)
b = scipy.ndimage.filters.generic_filter(a, numpy.median, 5)
b.shape
#(100L, 100L, 60L)

相关内容

  • 没有找到相关文章

最新更新