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

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

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

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

OpenCV

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

Python 3.x

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

Q&A

解決済

1回答

2417閲覧

pythonの連続データをcsvファイルで保存する方法

yamaneko0717

総合スコア6

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

OpenCV

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

Python 3.x

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

2グッド

2クリップ

投稿2020/03/13 06:53

編集2020/03/17 03:21
pythonについて最近学習を始めたものです。ネット上に掲載されていたコードを用いてARマーカーまでの距離を計測するプログラムを作成しています。その際に、出力結果をcsvファイルに保存したいのですが、なかなか上手くいきません・・・。 初歩的な質問とは重々承知ではございますが、csvファイルに結果を保存する方法を教えていただきたいです。 ### 該当のソースコード ```python ```ここに言語を入力 import cv2 import cv2.aruco as aruco import sys import numpy as np from math import * import csv arucoMarkerLength = 0.04 class AR(): def __init__(self, videoPort, cameraMatrix, distortionCoefficients): self.cap = cv2.VideoCapture(videoPort) self.cameraMatrix = np.load(cameraMatrix) self.distortionCoefficients = np.load(distortionCoefficients) self.dictionary = aruco.getPredefinedDictionary(aruco.DICT_4X4_50) def findARMarker(self): self.ret, self.frame = self.cap.read() if len(self.frame.shape) == 3: self.Height, self.Width, self.channels = self.frame.shape[:3] else: self.Height, self.Width = self.frame.shape[:2] self.channels = 1 self.halfHeight = int(self.Height / 2) self.halfWidth = int(self.Width / 2) self.corners, self.ids, self.rejectedImgPoints = aruco.detectMarkers(self.frame, self.dictionary) #corners[id0,1,2...][][corner0,1,2,3][x,y] aruco.drawDetectedMarkers(self.frame, self.corners, self.ids, (0,255,0)) def show(self): cv2.imshow("result", self.frame) def getDistanceAverage(self): if len(self.corners) > 0: self.rvec, self.tvec, _ = aruco.estimatePoseSingleMarkers(self.corners, arucoMarkerLength, self.cameraMatrix, self.distortionCoefficients) G = np.mean(self.tvec, axis = 0) return G[0][2] def main(): def getExistMarker(self): return len(self.corners) def release(self): self.cap.release() if __name__ == '__main__': myCap = AR(0, 'mtx.npy', 'dist.npy') while True: myCap.findARMarker() print(myCap.getDistanceAverage()) myCap.show() if cv2.waitKey(1) > 0: myCap.release() cv2.destroyAllWindows() break

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

python3.7.4/win8/WinPython

DrqYuto, s.k👍を押しています

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

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

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

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

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

DrqYuto

2020/03/13 09:34

ソースコードは分かりませんが、 import csv すると良いかもしれません。 参考 PythonでCSVファイルを読み込み・書き込み(入力・出力) | note.nkmk.me https://note.nkmk.me/python-csv-reader-writer/ "CSVファイルの書き込み(出力): csv.writer CSVファイルの書き込み(出力)にはcsv.writerクラスを使う。"
y_waiwai

2020/03/15 07:21

このままではコードが読めないので、質問を編集し、<code>ボタンを押し、出てくる’’’の枠の中にコードを貼り付けてください
yamaneko0717

2020/03/17 03:22

遅くなりましたが、ソースコードを読みやすいように修正いたしました。 こちらで大丈夫でしょうか・・・?
guest

回答1

0

ベストアンサー

追記修正に一部書いていますが、回答します。

基本、データ型に応じて、それぞれの方法があります。どれでもいいです。
データ型も相互に変換できるので。
listを使った時になぜか配列ごとに一つ改行が余計に入ってしまったので、
NumpyかPandasを使うのがいいと思います。

Python

1 2# Numpyの場合 3import numpy as np 4data_np = np.random.randint(0,10,(3, 3)) 5np.savetxt('D:\teratail\20200322_01.csv', data_np, delimiter = ',') 6 7 8# pandasの場合 9import pandas as pd 10data_pd = pd.DataFrame(data_np) 11data_pd.to_csv('D:\teratail\20200322_02.csv', header = False, index = False) 12 13 14# listの場合 15import csv 16data_list = data_np.tolist() 17with open('D:\teratail\20200322_03.csv', 'w') as f: 18 writer = csv.writer(f) 19 for i in range(len(data_list)): 20 writer.writerow(data_list[i]) 21

投稿2020/03/22 10:18

Matsui_hero

総合スコア346

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

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

yamaneko0717

2020/03/23 10:04

ご丁寧にありがとうございます! Numpyで試してみたところ思ったとおりの結果が得られました! 本当にありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問