2016-05-29 33 views
1

イメージがシェイプ(120,470,4)で、別のサイズにサイズを変更したいとします。 (100,400,4)。 Iはopencvの透明イメージのサイズを変更するpython(cv2)

reshaped_image = cv2.resize(image, (100, 400))

ベローとしてcv2.resize関数を使用してそれを達成し、大きな透明画像内部reshaped_imageを貼り付けようが、問題はreshaped_imageでは(100、400、3)の代わりに(100形状を有しています、400,4)。

何か問題がありますか?cv2.resize機能が透過情報を失うことはありますか? 最後に、私はあなたの解決策を知ってうれしく思います。ここ

に関して

答えて

3

(可能であれば簡単な例)3チャネル画像をロードする例であり、まったく意味をなさないた(アルファチャンネルとしての青チャンネルにコピーそれがかかりますが、私は4を有していませんでした4チャンネル画像として再度マージします。次に、この画像のサイズが変更されます。

4チャネルイメージをロードする場合、フラグ-1はイメージが変更されていないことを示します。したがって、4つのチャネルすべてを直接ロードおよび分割できます。

すべての画像の形が印刷され、サイズ変更が機能します。私はopencvバージョン3.1.0を使っています。

希望に役立ちます。

import cv2 
import numpy as np 

img = cv2.imread('image.jpg', -1) 
print img.shape 

b_channel, g_channel, r_channel = cv2.split(img) 
alpha_channel = b_channel 
print b_channel.shape 
print g_channel.shape 
print r_channel.shape 
print alpha_channel.shape 

img_RGBA = cv2.merge((b_channel, g_channel, r_channel, alpha_channel)) 
print img_RGBA.shape 

res = cv2.resize(img_RGBA,(100, 400), interpolation = cv2.INTER_CUBIC) 
print res.shape 
+0

回答にはありがたいですが、cv2の下位バージョンでこれを行う方法はありますか?私は現在2.4.8を使用しており、サイズ変更機能はサイズ変更後に私に3チャンネルの画像を与えます。 –

関連する問題