質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

2384閲覧

正規化がうまくできない

kusegasugoi0221

総合スコア11

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/10/05 06:01

編集2020/10/06 06:38

以下のコードで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)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meg_

2020/10/05 10:49

エラーメッセージに解決策が書いてあるようですがそれらは試されましたか?
kusegasugoi0221

2020/10/05 11:35

試してはいるのですが、histをreshapeしても同じエラーが発生してしまいます。
meg_

2020/10/05 11:54

当方の環境のcv2では「xfeatures2d」が使えなかったのでお役に立てませんでした。。
toast-uz

2020/10/05 23:24

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
guest

回答1

0

ベストアンサー

件の問題自体は、以下で動作します。

python

1hist = hist.reshape(-1,1)

投稿2020/10/06 00:13

t_obara

総合スコア5488

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

toast-uz

2020/10/06 03:35

histをreshapeしても同じエラーが発生、という質問者様のコメントは、何か勘違いだったのでしょうかね。 hist.reshape(-1,1) だけ書いてしまった、というのですかね。
kusegasugoi0221

2020/10/06 06:23

回答してくださったコードを入力してはいるのですが いま編集で載せたエラーが起きてしまいます
toast-uz

2020/10/06 10:53

出だしの部分から、理由なく、かなりコードを書き換えていますね。なぜでしょうか?当初の原因が分からなくなってしまいます。
t_obara

2020/10/07 06:28

別な場所でのエラーではないですか? 結果をnp.ravelなどで戻さないとそのエラーが出ます。 ちなみに、当初のエラーを指摘、修正すると、再度別のエラーが出るだろうなとは思いました。 そのような場合、自分で頑張る人と、別質問で聞く人と、質問を続ける人の3種類くらいの人がいることを観測しています。
toast-uz

2020/10/07 09:58

質問そのものに、回答をコメントで入れてしまっていますね。 当初とは別のエラーであれば、質問を修正して続けないで欲しいです。せっかくの回答が意味不明になってしまいます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問