以下のコードでhist_normで一枚の画像の横軸に128次元のヒストグラムを表示したいのですが、StandardScalerのところで
エラーが起きているようです。解決法を教えてください。コードの下にエラー内容を表示してます。
gray = io.imread('./sample/sample01.jpg', as_gray=True) detector = cv2.xfeatures2d.SIFT_create() #特徴点と特徴量を抽出 keypoints,descriptors = detector.detectAndCompute(gray,None) descriptors = descriptors.astype(np.float32) #128次元それぞれを合計 hist = descriptors.sum(axis=0) #hist=hist.reshape(-1,1) bin = np.arange(128) mmcaler = MinMaxScaler() hist_norm = mmcaler.fit_transform(hist) #hist_norm=hist_norm.reshape(-1,1) #ヒストグラム表示 fig, ax = plt.subplots() ax.bar(bin,hist_norm) plt.show()
#エラー内容
TypeError: only size-1 arrays can be converted to Python scalars 以下の図のようにヒストグラム表示をしたいです。縦軸は正規化した値を用いたいです ![イメージ説明](8790ca09296ff1eeaf9a9a15202e6226.png)
当方の環境のcv2では「xfeatures2d」が使えなかったのでお役に立てませんでした。。
meg_様、opencv-contrib-pythonもインストールすると使えますよ。
print(hist)すると以下のWARNが出てきますね。関係あるのか不明ですが。
[ WARN:0] global /private/var/folders/nz/vv4_9tw56nv9k3tkvyszvwg80000gn/T/pip-req-build-czkpurnv/opencv_contrib/modules/xfeatures2d/misc/python/shadow_sift.hpp (15) SIFT_create DEPRECATED: cv.xfeatures2d.SIFT_create() is deprecated due SIFT tranfer to the main repository. https://github.com/opencv/opencv/issues/16736
回答1件
あなたの回答
tips
プレビュー