前提
プログラミングを始めた初心者です。ぜひサポートをよろしくお願いいたします。
vscodeとpythonを使って画像の輪郭点座標(掲示したプログラムは、白地背景に黒線で描いた円の外側と内側の輪郭点を抽出するためのプログラムです)を抽出しcsvに出力するプログラムを作成しています。
実現したいこと
抽出した座標をエクセルのA列にx座標、B列にy座標を縦に並べていきたいです。
発生している問題・エラーメッセージ
csv出力してもエクセルは空白のままです。
掲示したプログラムでA列に各座標点のx座標が入力されると思いましたがうまくいきません。
座標の抽出まではできていました。
該当のソースコード
import cv2 import matplotlib.pyplot as plt import csv import pandas as pd import itertools import collections figure = cv2.imread('C:/Users/hirashiba-ju/Desktop/test20221215.jpg') figure_2 = cv2.cvtColor(figure,cv2.COLOR_BGR2GRAY) plt.imshow(figure_2) plt.gray() plt.show() th,figure_3 = cv2.threshold(figure_2,128,255,cv2.THRESH_BINARY) data,hierarchy = cv2.findContours(figure_3,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE) cv2.drawContours(figure, data, -1, color=(0, 0, 255), thickness=1) plt.imshow(figure) plt.show() data = list(data) b = [] for i in data: for j in i: for k in j: b.append(k[0]) with open('csv.csv','w',newline="") as f: writer = csv.writer(f,delimiter=",") for c in b: writer.writerows(c)
試したこと
dataには各座標リストが入っているので、各座標のインデックス0を順に抽出して(b)、csv出力すればよいと思ったのですが、
うまくいきませんでした。
補足情報(FW/ツールのバージョンなど)
皆様の知識をお貸しいただきたいです。
よろしくお願いいたします。
ソースコードはコードブロック</>を利用して記入願います.インデントが崩れており,コードが読めません.
コードは「コードの挿入」で記入してください。
すみません。初めての利用で変な表記になってしまいました。修正いたしました。よろしくお願いいたします。
質問のコードを試したところ下記エラーが発生しました。
発生個所:writer.writerows(c)
エラー:TypeError: 'numpy.intc' object is not iterable
コードが同じものか確認していただけませんか?(実際に実行したコードと質問に記載したコードが同一かどうか)
ありがとうございます。コードは同一です。 'numpy.intc' object is not iterableを解決しようとしたのですが、今のコードで何が問題なのかがわかりませんでしたイテラブルとしてcやbが使用できないのでしょうか。
いつもの感覚でfor文を作ったのですが、エラーの理由が理解できておりません。何か解決方法ご存じであればご教授いただければ幸いです。

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