配列に格納されたすべての画像のサイズを変更

Nawr C:

I記憶された画像は、リードスルーcv2.imread配列内masksアレイの形状です(10, 5248, 7936, 3) (10 images, image height, image width, 3 channels)

私は今、この配列をコピーするが、値にリサイズすべての画像にしようとしていますmonitor_hmonitor_wここで私が持っているものです。

resized_masks = np.empty([masks.shape[0], monitor_h, monitor_w, masks.shape[3]])

for i in range(masks.shape[0]):
    resized_masks[i] = cv2.resize(np.copy(masks[i]), (monitor_w, monitor_h))

しかし、私はから取得する画像はcv2.imshow黒と白です。何かがチャンネルを起こっている必要があります。任意のリード?

マッド物理学者:

あなたのイメージは黒と白の出てきている理由を確認するには、コードを通してのステップをしましょう。

resized_masks = np.empty([masks.shape[0], monitor_h, monitor_w, masks.shape[3]])

この行は、型の配列を作成しnp.float、デフォルトでは。

resized_masks[i] = cv2.resize(np.copy(masks[i]), (monitor_w, monitor_h))

この行は、結果割り当てcv2.resizeのスライスにしますresized_masks

あなたのオリジナルの画像、およびのため、結果はcv2.resize、おそらくタイプですnp.uint8割り当てはに値をキャストfloatバッファに入れてS。キャストは、それ自体の罰金です:5への変換5.0255に変換255.0問題は、あるfloat値が範囲にクリップされるものとして解釈され[0.0, 1.0]、ではありません[0.0, 255.0]そのため、彼らは正しい値どのように見えるかを含んでいても、効果的にすべての0と1にあるイメージになってしまいます。

あなたは値が表示して正しいことを確認することができます

resized_masks.astype(masks.dtype)

これが本当の修正はありません。本当の修正は、正しい出力タイプを開始することです:

resized_masks = np.empty((masks.shape[0], monitor_h, monitor_w, masks.shape[3]), dtype=masks.dtype)

それは形ではなく、リストのタプルを使用する従来のですが、それは問題で機能しないことに注意してください。

今すぐあなたの理由での見てみましょうパッチが働いていました。

resized_masks = list(resized_masks)

これは、各サブアレイへの参照のPythonのリストを作成します。あなたが本当にスライスされているので、彼らはまだボンネットの下に連続したバッファを指しますが、重要なことは、それぞれがあることであるresized_masks[i]同じ配列オブジェクトへの別個の基準ではなく、スライスです。

resized_masks[i] = list(cv2.resize(np.copy(masks[i]), (monitor_w, monitor_h)))

ためresized_masksの参照を含むリストであり、これは今の結果代入さcv2.resizei番目リスト要素、適切なサイズのスライスにコンテンツを割り当てません。あなたは必要としないlist、それが不要な次元を導入して、ここではラッパーを。

resized_masks = np.asarray(resized_masks)

すべての要素が(上記のようにあなたは、余分な単位寸法が表示されますが)正しいサイズであるため、これは単に、配列にリストを再結合します。あなたが想像できるように、このソリューションは非常に非効率的です。あなたがリストにしてから行くと、複数の不要なバッファを割り当てているという事実の上に、あなたはまた、元の破棄されnp.empty、それを使用せずに配列を。

あなたのパッチがやっとほぼ同等です

resized_masks = np.array([cv2.resize(np.copy(mask), (monitor_w, monitor_h)) for mask in masks])

私はそのようにそれをやってお勧めしません。

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=320418&siteId=1