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

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

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

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

Python

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

Q&A

解決済

3回答

3562閲覧

ヒストグラムでの画像比較

mochisio

総合スコア19

OpenCV

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

Python

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

0グッド

0クリップ

投稿2017/11/28 05:27

編集2017/11/29 05:07

###前提・実現したいこと
ヒストグラムによる画像処理をしたいです。
###発生している問題・エラーメッセージ
いくつかの画像で試したのですが、出力されるdの値が1.0のまま動きません

###該当のソースコード

import cv2 def main(): im1 = cv2.imread("C:\Users\wakimoto\testimg\Tulips.jpg",0) im2 = cv2.imread("C:\Users\wakimoto\testimg\Tulips2.jpg",0) print(im1) hist1 = cv2.calcHist([im1],[0],None,[256],[0,256]) hist2 = cv2.calcHist([im2],[0],None,[256],[0,256]) d = cv2.compareHist(hist1,hist2,0) #類似度dは0から1の範囲で出るらしい print(d) if __name__ == "__main__": main()

###試したこと
imshowで画像を表示させようとしましたが、......\modules\highgui\src\window.cpp:281: error: (-215) size.width>0 && size.height>0 in function cv::imshow
というエラーが出ました。
###補足情報(言語/FW/ツール等のバージョンなど)
juoyter notebook4.2.3

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

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

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

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

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

guest

回答3

0

ベストアンサー

\はエスケープしないとマズいんじゃないですかね。
ここでは次のようなコードが提案されています。

python

1path = "C:/hoge/page.jpg".replace('/', os.sep)

投稿2017/11/29 05:49

KojiDoi

総合スコア13671

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

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

can110

2017/11/29 06:00

ですね。 ただpythonではr"文字列"と記載すると文字列中のエスケープが無効になる(「¥」は「¥」のまま扱われる)のでより簡便かと。
mochisio

2017/12/04 03:38

そうしたらdの値が一定でなくなり解決しました。
guest

0

画像が正常に読み込まれていない可能性が高いです。
im1 = cv2.imread("Tulips.jpg",0)の後にprint(im1)してみて結果がNone表示されませんか?
ファイルパスを"/hoge/huga/Tulips.jpg"などのようにフルパスで指定してみてください。

検証コード

Python

1import cv2 2def main(): 3 im1 = cv2.imread("存在しないファイル.jpg",0) 4 im2 = cv2.imread("存在しないファイル2.jpg",0) 5 print(im1) 6 7 hist1 = cv2.calcHist([im1],[0],None,[256],[0,256]) 8 hist2 = cv2.calcHist([im2],[0],None,[256],[0,256]) 9 10 d = cv2.compareHist(hist1,hist2,0) 11 print(d) 12 13 cv2.imshow('test',im1) 14 15if __name__ == "__main__": 16 main()

実行結果例

None 1.0 OpenCV Error: Assertion failed (size.width>0 && size.height>0) in cv::imshow, file ......\modules\highgui\src\window.cpp, line 281 Traceback (most recent call last): File "C:\hoge.py", line 19, in <module> main() File "C:\hoge.py", line 16, in main cv2.imshow('test',im1) cv2.error: ......\modules\highgui\src\window.cpp:281: error: (-215) size.width>0 && size.height>0 in function cv::imshow

まずファイルパスおよびファイルを存在するかを確認することが先決です。

Python

1import os 2path1 = 'lena.jpg' 3path1 = os.path.abspath(path1) 4print(path1) # c:\hoge\huga\lena.jpg など意図したパスであること 5print(os.path.exists(path1)) # Trueであること 6im1 = cv2.imread(path1,0) 7# 略

なお、フルパスで指定する場合は、r"c:\~"と記載してください。
(パス文字中の\\とエスケープしてもよいですが、面倒なため)

im1 = cv2.imread( r"C:\Users\wakimoto\testimg\Tulips.jpg", 0);

投稿2017/11/28 06:24

編集2017/11/29 05:55
can110

総合スコア38262

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

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

mochisio

2017/11/28 06:43

フルパスにしてもだめでした
can110

2017/11/28 06:47

「だめ」というのは具体的にはどういう結果になったのでしょうか?(print(im1)がNone表示?)
mochisio

2017/11/28 07:13

imgがNoneでdが0でした
can110

2017/11/28 07:26

まずcv2.imread()にてファイルが開けない問題を解決するのが先決です。
mochisio

2017/11/28 07:43

path1に対してはC:\Users\wakimoto estimg ace.jp os.path.exists(path1)に対してはFalse と出ました。
can110

2017/11/28 07:49

存在しないということなので、正しいファイルパスを指定すればよいと思います。
mochisio

2017/11/29 04:53 編集

一応SHIFT+右クリックからのフルパスでコピーしているのですがそれでもFalseになります。
can110

2017/11/29 04:54

現在の状況が不明ですので、可能であれば質問本文のコードを最新のものに修正ください。
guest

0

d = cv2.compareHist(hist1[0],hist2[0],0)
でもだめですか?

imshowは何が悪いんでしょう。
引数はどうなっていますか。

投稿2017/11/28 06:23

mkgrei

総合スコア8560

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問