加载一个大的 tif 文件,但在 openCV 中只加载了第一个切片

问题描述

我正在编写代码以处理我的 tiff 文件

我设法加载了 20 到 30 个切片的 tif 文件,但是当我继续处理具有 4000 个切片的原始文件时,只加载了第一个切片。我没有收到任何类型的错误。 我什至继续使用 FIJI image J 将这些文件重新保存到 tiff 文件中,以防原件损坏但结果相同。

这是我的原始文件之一:https://www.dropbox.com/s/wtkyj9qzxw4q1uf/CT_Part.tif?dl=0

    etval,mats = cv.imreadmulti(tif,flags=cv.IMREAD_GRAYSCALE)
    print(len(mats))

所以这个打印输出 1 而不是 4000 slice 。同样,如果我用只有 20 个切片的一小块原始文件进行测试,我确实得到了 20 个。

Opencv 版本:4.5.1 Python 版本:3.8.3

任何解释或建议将不胜感激。

解决方法

使用 tifffile 库,如果您的代码出现问题,您可以通过以下方式替换它:

    <?php


if ( ! defined( 'ABSPATH' ) ) {
    exit;
}

$related_product_view = woodmart_get_opt( 'related_product_view' );

if ( $related_products ) : ?>

    <div class="related-products">
        
        <?php
        $heading = apply_filters( 'woocommerce_product_related_products_heading',__( 'Related products','woocommerce' ) );
        
        if ( $heading ) :
            ?>
        <h3 class="title slider-title"><?php echo esc_html( $heading ); ?></h3>
        <?php endif; ?>
        
        <?php 
        
            if ( $related_product_view == 'slider' ) {
                $slider_args = array(
                    'slides_per_view' => ( woodmart_get_opt( 'related_product_columns' ) ) ? woodmart_get_opt( 'related_product_columns' ) : apply_filters( 'woodmart_related_products_per_view',4 ),'img_size' => 'woocommerce_thumbnail','products_bordered_grid' => woodmart_get_opt( 'products_bordered_grid' ),'custom_sizes' => apply_filters( 'woodmart_product_related_custom_sizes',false ),'product_quantity' => woodmart_get_opt( 'product_quantity' )
                );
                
                woodmart_set_loop_prop( 'products_view','carousel' );

                echo woodmart_generate_posts_slider( $slider_args,false,$related_products );
            }elseif ( $related_product_view == 'grid' ) {
        
                woodmart_set_loop_prop( 'products_columns',woodmart_get_opt( 'related_product_columns' ) );
                woodmart_set_loop_prop( 'products_different_sizes',false );
                woodmart_set_loop_prop( 'products_masonry',false );
                woodmart_set_loop_prop( 'products_view','grid' );
                
                woocommerce_product_loop_start();

                foreach ( $related_products as $related_product ) {
                    $post_object = get_post( $related_product->get_id() );

                    setup_postdata( $GLOBALS['post'] = $post_object );

                    wc_get_template_part( 'content','product' ); 
                }

                woocommerce_product_loop_end();
                
                woodmart_reset_loop();
                
                if ( function_exists( 'woocommerce_reset_loop' ) ) woocommerce_reset_loop();
            }
            
        ?>
        
    </div>

<?php endif;

wp_reset_postdata();

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...