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

2024-06-26 01:33:16 发布

您现在位置: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')

Tags: imageimportself程序examplesavenpcv2
1条回答
网友
1楼 · 发布于 2024-06-26 01:33:16

我认为您没有正确地重新组合最终堆栈(上面没有显示?),并保存单个帧(最后一帧)?你知道吗

另一种选择是放弃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)

相关问题 更多 >