🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
OpenCV

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

Python 3.x

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

Q&A

解決済

1回答

1805閲覧

OpenCV Keypointの内容をCSVファイルに書き出す関数を作りたいがうまくいかない。

Kazumori102

総合スコア45

OpenCV

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

Python 3.x

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

0グッド

0クリップ

投稿2019/09/21 17:30

前提・実現したいこと

Python+OpenCVにて、Keypointの内容をCSVファイルに書き出す関数を作りたい。

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

うまくいかない。型の名前?がわからんせいだと思うのですけども…

File "<path>", line 5 def wirte_kp_list(keypoint hoge, str name = 'kp'): ^ SyntaxError: invalid syntax

該当のソースコード

Python

1 2# -*- coding: utf-8 -*- 3import cv2 4 5def wirte_kp_list(keypoint hoge, str name = 'kp'): 6 f = open(name+'.csv', 'w') 7 fileprint = "x[pic],y[pic],size,ang[deg],response,octave,class_id\n" 8 for x in hoge: 9 fileprint += ( 10 str(x.pt[0]) + "," + 11 str(x.pt[1]) + "," + 12 str(x.size) + "," + 13 str(x.angle) + "," + 14 str(x.response) + "," + 15 str(x.octave) + "," + 16 str(x.class_id) + "\n" 17 ) 18 #特徴点の位置をx、y分けて表示 19 f.write(fileprint) 20 f.close() 21 22# 画像1 23img1 = cv2.imread("img1.jpg") 24# 画像2 25img2 = cv2.imread("img2.jpg") 26 27# A-KAZE検出器の生成 28akaze = cv2.AKAZE_create() 29 30# 特徴量の検出と特徴量ベクトルの計算 31kp1, des1 = akaze.detectAndCompute(img1, None) 32kp2, des2 = akaze.detectAndCompute(img2, None) 33 34wirte_kp_list(kp1,'kp1') 35wirte_kp_list(kp2,'kp2') 36 37

試したこと

公式ドキュメントとか見ながらいろいろ名前変えて試してみたけどダメ。

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

バージョン: 1.38.1 (user setup)
コミット: b37e54c98e1a74ba89e03073e5a3761284e3ffb0
日付: 2019-09-11T13:35:15.005Z
Electron: 4.2.10
Chrome: 69.0.3497.128
Node.js: 10.11.0
V8: 6.9.427.31-electron.0
OS: Windows_NT x64 10.0.17763

Package Version


astroid 2.2.5
attrs 19.1.0
backcall 0.1.0
bleach 3.1.0
colorama 0.4.1
cycler 0.10.0
decorator 4.4.0
defusedxml 0.6.0
entrypoints 0.3
ipykernel 5.1.2
ipython 7.8.0
ipython-genutils 0.2.0
ipywidgets 7.5.1
isort 4.3.21
jedi 0.15.1
Jinja2 2.10.1
jsonschema 3.0.2
jupyter 1.0.0
jupyter-client 5.3.3
jupyter-console 6.0.0
jupyter-core 4.5.0
kiwisolver 1.1.0
lazy-object-proxy 1.4.1
MarkupSafe 1.1.1
matplotlib 3.1.1
mccabe 0.6.1
mistune 0.8.4
nbconvert 5.6.0
nbformat 4.4.0
networkx 2.3
notebook 6.0.1
numpy 1.17.0
opencv-python 4.1.1.26
pandas 0.25.0
pandocfilters 1.4.2
parso 0.5.1
pickleshare 0.7.5
pip 19.2.3
prometheus-client 0.7.1
prompt-toolkit 2.0.9
Pygments 2.4.2
pylint 2.3.1
pyparsing 2.4.2
pyrsistent 0.15.4
python-dateutil 2.8.0
pytz 2019.2
pywin32 225
pywinpty 0.5.5
PyYAML 5.1.2
pyzmq 18.1.0
qtconsole 4.5.5
Send2Trash 1.5.0
setuptools 41.2.0
six 1.12.0
terminado 0.8.2
testpath 0.4.2
tornado 6.0.3
traitlets 4.3.2
typed-ast 1.4.0
wcwidth 0.1.7
webencodings 0.5.1
widgetsnbextension 3.5.1
wrapt 1.11.2
XlsxWriter 1.1.9

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

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

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

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

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

guest

回答1

0

ベストアンサー

def wirte_kp_list(keypoint hoge, str name = 'kp'):

Pythonは関数定義の際、型を書きません。今回の場合、keypointstrを書くのが余計です。
C言語などとは違いどのような型の変数でも受け付けます。

型を限定したいなら型チェック処理を実装する必要があります。
が、ここでは詳しく書きません。isinstanceraise ValueErrorなどをキーワードに調べてみてください。

投稿2019/09/21 22:27

編集2019/09/22 05:02
nomuken

総合スコア1627

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

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

Kazumori102

2019/09/22 05:01

Cの癖が抜けないです。消したら動きました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問