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

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

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

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

6193閲覧

HOG特徴量の表示ができない

YukaU

総合スコア16

OpenCV

OpenCV(オープンソースコンピュータービジョン)は、1999年にインテルが開発・公開したオープンソースのコンピュータビジョン向けのクロスプラットフォームライブラリです。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2019/02/13 04:47

画像image.pngをHOG特徴量を用いて表示したいです。

python

1#!/usr/bin/python 2# coding: UTF-8 3 4import matplotlib.pyplot as plt 5import cv2 6from skimage.feature import hog 7from skimage import data, exposure 8 9img = cv2.imread('C:Users\yuu\Documents\webcamera\image.png',0) 10 11fd, hog_image = hog(img, orientations=8, pixels_per_cell=(16, 16), 12 cells_per_block=(1, 1), visualize=True, multichannel=False) 13hog_image_rescaled = exposure.rescale_intensity(hog_image, in_range=(0, 10)) 14 15plt.axis('off') 16plt.imshow(hog_image_rescaled, cmap=plt.cm.gray) 17plt.savefig('hog.png')

エラーが以下です。

ValueError: Only images with 2 spatial dimensions are supported. If using with color/multichannel images, specify `multichannel=True`.

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

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

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

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

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

guest

回答1

0

ベストアンサー

HOG 特徴量の描画は imshow() に渡せば以下のようにそのままできるはずなので、できないということはそもそも画像が正しく読み込めているのか確認してください。

print(img) して None になっていれば読み込みに失敗しています。
(パスが間違っていないか、パスに日本語が含まれていないかなど)

python

1import cv2 2import matplotlib.pyplot as plt 3from skimage import feature 4 5img = cv2.imread(r'C:\Users\MyName\Desktop\lena.jpg', cv2.IMREAD_GRAYSCALE) 6print(img) 7# HOG 特徴量を計算する。 8features, hog_img = feature.hog(img, orientations=8, pixels_per_cell=(16, 16), 9 cells_per_block=(1, 1), visualize=True, multichannel=False) 10# matplotlib で表示する。 11plt.figure(figsize=(10, 10)) 12plt.imshow(hog_img, cmap='inferno') 13plt.axis('off') 14plt.savefig('result.png')

イメージ説明

勾配強度がわかりやすいようにカラーマップで可視化しています。
グレースケールで可視化したい場合は imshow() で cmap='gray' としてください。

投稿2019/02/13 07:06

編集2019/02/13 07:59
tiitoi

総合スコア21956

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

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

YukaU

2019/02/13 07:19

Noneでした プログラムがある場所と同じフォルダに入れていて、 'C:Users\yuu\Documents\webcamera\image.png' と、 'image.png' の両方でやってみましたができなかったです
tiitoi

2019/02/13 07:23

Python では \ は特殊文字なので、\ 自体を表したい場合は \ と2つ書く必要があります。 それか r'C:Users\yuu\Documents\webcamera\image.png' というようにraw 文字列を使ってください。
YukaU

2019/02/13 07:48

変わらなかったのでC:にプログラムと画像をおいて、最後に plt.savefig("hog1.png") これを書いたら画像は認識されましたが別のエラーがでました。 C:\>python hoghog.py [[184 184 184 ... 175 173 173] [184 184 184 ... 173 173 173] [184 184 184 ... 173 173 173] ... [ 93 93 96 ... 188 187 187] [ 96 99 103 ... 187 186 186] [ 0 0 0 ... 0 0 0]] C:\Tools\Anaconda3\lib\site-packages\skimage\feature\_hog.py:150: skimage_deprecation: Default value of `block_norm`==`L1` is deprecated and will be changed to `L2-Hys` in v0.15. To supress this message specify explicitly the normalization method. skimage_deprecation) Traceback (most recent call last): File "hoghog.py", line 19, in <module> plt.savefig("hog1.png") File "C:\Tools\Anaconda3\lib\site-packages\matplotlib\pyplot.py", line 695, in savefig res = fig.savefig(*args, **kwargs) File "C:\Tools\Anaconda3\lib\site-packages\matplotlib\figure.py", line 2062, in savefig self.canvas.print_figure(fname, **kwargs) File "C:\Tools\Anaconda3\lib\site-packages\matplotlib\backends\backend_qt5agg.py", line 94, in print_figure super(FigureCanvasQTAgg, self).print_figure(*args, **kwargs) File "C:\Tools\Anaconda3\lib\site-packages\matplotlib\backend_bases.py", line 2263, in print_figure **kwargs) File "C:\Tools\Anaconda3\lib\site-packages\matplotlib\backends\backend_agg.py", line 530, in print_png with cbook.open_file_cm(filename_or_obj, "wb") as fh: File "C:\Tools\Anaconda3\lib\contextlib.py", line 112, in __enter__ return next(self.gen) File "C:\Tools\Anaconda3\lib\site-packages\matplotlib\cbook\__init__.py", line 626, in open_file_cm fh, opened = to_filehandle(path_or_file, mode, True, encoding) File "C:\Tools\Anaconda3\lib\site-packages\matplotlib\cbook\__init__.py", line 611, in to_filehandle fh = io.open(fname, flag, encoding=encoding) OSError: [Errno 22] Invalid argument: 'hog.png'
tiitoi

2019/02/13 07:54

plt.savefig("hog1.png") これは作成した Figure を画像として保存する関数なので、元の画像が読み込まれるかどうかには関係ないはずですよ。
tiitoi

2019/02/13 08:00 編集

デスクトップに画像 lena.jpg が置いてある場合のコードに書き換えました。これを参考にパスの指定が正しいかどうか確認してください。 result.png というファイルで結果が保存されます。
YukaU

2019/02/13 08:24

できました!!! 自分では見つけられないパスの間違いがあったんだとおもいます。 お世話かけました、ありがとうございます。
tiitoi

2019/02/13 08:27

今気づいたんですが、ドライブレターのあとの \ マークが質問のコードだと抜けてますね NG: C:Users OK: C:\Users
YukaU

2019/02/13 10:33

ありがとうございます!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問