使用python增加tiff文件的亮度

发布于 2025-01-13 15:12:00 字数 2459 浏览 1 评论 0原文

我正在编写一个Python脚本来从显微镜相机获取图像,然后将它们组合成一个avi文件。(15fps,持续3秒)。 我写了一个程序,但最终结果太暗了。 我正在寻找一种解决方案,让它变得更亮。 当我添加增强器时,我收到此错误

ValueError: image has wrong mode

相机提供了 45 个 dat 文件。我将它们转换为 tiff,然后连接起来得到一个 avi 文件。 相机是 Andor Neo 5.5 sCMOS

这是我的代码的一部分:

    with tifffile.TiffWriter('datfiles.tif', bigtiff=False) as tif:
        for datfile in datfiles:
            data = numpy.fromfile(
                datfile,
                count=width * height * 3 // 2,          # 12 bit packed
                offset=4,                               # 4 byte integer header
                dtype=numpy.uint8,
            ).astype(numpy.uint16)
            image = numpy.zeros(width * height, numpy.uint16)
            image[0::2] = (data[1::3] & 15) | (data[0::3] << 4)
            image[1::2] = (data[1::3] >> 4) | (data[2::3] << 4)
            image.shape = height, width
            #img = increase_brightness(image)
            tif.write(
                image, photometric='minisblack', compression=None, 
                                                                metadata=None)   
    

    img = Image.open('datfiles.tif')
    enhancer = ImageEnhance.Brightness(img)
    img=enhancer.enhance(4)

    
    for i in range(45):
        
        
        try:
            img.seek(i)
            img.save('page_%s.tif'%(i,))
        except EOFError:
            break
      
    os.remove("datfiles.tif")
    
    
    '''
    ------------------------------------------
    Concatenate the tif files ----> .avi of 3 sec
    '''
    image_folder =os.getcwd()                               #to be modified
    print(image_folder)                                     #testing
    video_name = "ConcatenatedVideo.avi"
    
    
    images = [img for img in os.listdir(image_folder) if img.endswith(".tif")]
    frame = cv2.imread(os.path.join(image_folder, images[0]))
    height, width, layers = frame.shape
    video = cv2.VideoWriter(video_name, 0, 15, (width,height))
    for image in images:
        video.write(cv2.imread(os.path.join(image_folder, image)))

            
    cv2.destroyAllWindows()
    video.release()
    
    for f in os.listdir(image_folder):               #delete allthe tiff files
        if(f.endswith(".tif")):
            os.remove(os.path.join(image_folder, f))            
    print('finished')
    os.chdir(path)
    

I am working on a python script to get images from a microscope camera and then combine them to have an avi file.(15fps for 3sec).
I wrote a program but the final result is too dark.
I am looking for a solution to make it brighter.
When I add enhancer I get this error

ValueError: image has wrong mode

The camera gives 45 dat files .I converted them to tiff and then concatenated then to have an avi file.
The camera is Andor Neo 5.5 sCMOS

Here is a part of my code:

    with tifffile.TiffWriter('datfiles.tif', bigtiff=False) as tif:
        for datfile in datfiles:
            data = numpy.fromfile(
                datfile,
                count=width * height * 3 // 2,          # 12 bit packed
                offset=4,                               # 4 byte integer header
                dtype=numpy.uint8,
            ).astype(numpy.uint16)
            image = numpy.zeros(width * height, numpy.uint16)
            image[0::2] = (data[1::3] & 15) | (data[0::3] << 4)
            image[1::2] = (data[1::3] >> 4) | (data[2::3] << 4)
            image.shape = height, width
            #img = increase_brightness(image)
            tif.write(
                image, photometric='minisblack', compression=None, 
                                                                metadata=None)   
    

    img = Image.open('datfiles.tif')
    enhancer = ImageEnhance.Brightness(img)
    img=enhancer.enhance(4)

    
    for i in range(45):
        
        
        try:
            img.seek(i)
            img.save('page_%s.tif'%(i,))
        except EOFError:
            break
      
    os.remove("datfiles.tif")
    
    
    '''
    ------------------------------------------
    Concatenate the tif files ----> .avi of 3 sec
    '''
    image_folder =os.getcwd()                               #to be modified
    print(image_folder)                                     #testing
    video_name = "ConcatenatedVideo.avi"
    
    
    images = [img for img in os.listdir(image_folder) if img.endswith(".tif")]
    frame = cv2.imread(os.path.join(image_folder, images[0]))
    height, width, layers = frame.shape
    video = cv2.VideoWriter(video_name, 0, 15, (width,height))
    for image in images:
        video.write(cv2.imread(os.path.join(image_folder, image)))

            
    cv2.destroyAllWindows()
    video.release()
    
    for f in os.listdir(image_folder):               #delete allthe tiff files
        if(f.endswith(".tif")):
            os.remove(os.path.join(image_folder, f))            
    print('finished')
    os.chdir(path)
    

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文