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

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

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

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

Python 3.x

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

Q&A

解決済

1回答

2374閲覧

特徴量検出機を作成して解析し、画像に特徴点を書き込み保存させる

yocchan

総合スコア13

OpenCV

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

Python 3.x

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

0グッド

0クリップ

投稿2019/01/21 07:57

編集2019/01/21 08:09

前提・実現したいこと

認識させる画像を読み込ませ、特徴点を解析して、特徴点を書き込んだ画像を保存させたい

発生している問題・エラーメッセージ

Traceback (most recent call last): File "C:\Users\seki-sugitalab\source\repos\library02\library02\Detect.py", line 47, in <module> main() File "C:\Users\seki-sugitalab\source\repos\library02\library02\Detect.py", line 42, in main cut = cv.drawKeypoints(cut, Keypoints, None) AttributeError: module 'cv2.cv2' has no attribute 'drawKeypoints'

該当のソースコード

import cv2 as cv import numpy as np def main(): # ファイルを読み込み image_file = "C:/Users/seki-sugitalab/Pictures/target.png" src = cv.imread(image_file, cv.IMREAD_COLOR) # 画像の大きさ取得 height, width, channels = src.shape image_size = height * width # グレースケール化 img_gray = cv.cvtColor(src, cv.COLOR_RGB2GRAY) # しきい値指定によるフィルタリング retval, dst = cv.threshold(img_gray, 127, 255, cv.THRESH_TOZERO_INV ) # 白黒の反転 dst = cv.bitwise_not(dst) # 再度フィルタリング retval, dst = cv.threshold(dst, 0, 255, cv.THRESH_BINARY | cv.THRESH_OTSU) # 輪郭を抽出 *dst, contours, hierarchy = cv.findContours(dst, cv.RETR_TREE, cv.CHAIN_APPROX_SIMPLE) for i, contour in enumerate(contours): # 小さな領域の場合は間引く area = cv.contourArea(contour) if area < 500: continue # 画像全体を占める領域は除外する if image_size * 0.99 < area: continue # 外接矩形を取得 x,y,w,h = cv.boundingRect(contour) # 外接矩形で囲まれた箇所のイメージを切り出し cut = dst[y:y+h][x:x+w] # 特徴量検出機を作成し解析 detector = cv.FastFeatureDetector_create() detector.setNonmaxSuppression(False) Keypoints = detector.detect(cut) # 画像への特徴点の書き込み cut = cv.drawKeypoints(cut,Keypoints, None) cv.imwrite('test_%d.png' % i, cut) if __name__ == '__main__': main()

試したこと

ネットからの情報を頼りにいろいろと調べ試行錯誤してみましたが、解決に至りませんでした。

補足情報(FW/ツールのバージョンなど)

Windows10
Python 3.6(64-bit)
Microsoft Visual Studio2017
opencv-python(4.0.0.21)

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

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

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

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

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

guest

回答1

0

ベストアンサー

shell

1pip install opencv-contrib-python

これでどうでしょうか?

追記

python

1# cut = dst[y:y+h][x:x+w] 2cut = dst[y:y+h, x:x+w]

の間違いではありませんか?

投稿2019/01/21 08:15

編集2019/01/21 08:43
_Victorique__

総合スコア1392

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

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

yocchan

2019/01/21 08:29 編集

回答ありがとうございます。 早速、やってみましたが、上記のエラーは解決できましたが、別のエラーが発生してしまいました。 Traceback (most recent call last): File "C:\Users\seki-sugitalab\source\repos\library02\library02\Detect.py", line 48, in <module> main() File "C:\Users\seki-sugitalab\source\repos\library02\library02\Detect.py", line 42, in main cut = cv.drawKeypoints(cut, Keypoints, None) TypeError: image is not a numpy array, neither a scalar 申し訳ございません。
yocchan

2019/01/21 08:47

無事に解決できました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問