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
ソースコードは分かりませんが、
import csv
すると良いかもしれません。
参考
PythonでCSVファイルを読み込み・書き込み(入力・出力) | note.nkmk.me
https://note.nkmk.me/python-csv-reader-writer/
"CSVファイルの書き込み(出力): csv.writer
CSVファイルの書き込み(出力)にはcsv.writerクラスを使う。"
このままではコードが読めないので、質問を編集し、<code>ボタンを押し、出てくる’’’の枠の中にコードを貼り付けてください
遅くなりましたが、ソースコードを読みやすいように修正いたしました。
こちらで大丈夫でしょうか・・・?

回答1件
あなたの回答
tips
プレビュー