web-dev-qa-db-ja.com

numpy行列をcv2イメージに変換する方法[python]

色付きの画像を表すnumpy 2dマトリックスがあります。この行列には負の数と浮動小数点数がありますが、もちろんimshow(my_matrix)を使用して画像を表示できます。

my_matrix_screenshot

私はこのカラー画像にヒストグラムイコライゼーションを実行する必要があるので、ここでcv2を使用してstackoverflowでコードを見つけました( OpenCV Python equalizeHistカラー画像 )が、問題はありません2Dマトリックスを、RGB用に3つのチャンネルを使用するcvマトリックスに変換します。

私は再び検索していましたが、私が見つけたのは通常の3D numpy行列をcv2行列に変換することですので、numpy 2d行列を3チャンネルのcv2行列に変換するにはどうすればよいですか?

6
user2266175

numpy.ndarrayはcv2のベースであるため、通常のようにコードを書くだけです。

img_np = np.ones([100,100])
img_cv = cv2.resize(img_np,(200,200))

あなたが試すことができます

5
shouhuxianjian

既存のnumpy配列を、その形状を変更して3番目の軸を追加するよりも、自身のコピーの上下に重ねることをお勧めします。このコードを確認してください:

import numpy as np
import matplotlib.pyplot as plt

a = np.random.Rand(90, 100) # Replace this line with your 90x100 numpy array.
a = np.expand_dims(a, axis = 2)
a = np.concatenate((a, a, a), axis = 2)
print(a.shape)
# (90, 100, 3)
plt.imshow(a)
plt.show()

灰色の画像が表示されます。

0
user1190882