画像を二値化して,白色部分の座標を摘出するプログラムを作成しました.画像処理の部分は省略しています.
座標を取得するところまではできたのですが,座標が(1,1),(1,2),(1,3)...とx軸を基準にプロットされます.これを(1,1),(2,1),(3,1)のようにy軸を基準に結果が表示されるように変更したいです.アドバイスお願いします.
また,お時間があればcsvファイルへの書き出しの方法もアドバイスお願いします.現在のプログラムで書き出すと,
3n0n0n
n3n0n0n
n3n0n0n
n3n0n1n
n3n0n1n
n3n0n1n
...
のように暗号みたいになってしまいます.
import cv2 import numpy as np from IPython import display from matplotlib import pyplot as plt import csv def imshow(img, format=".BMP", **kwargs): """ndarray 配列をインラインで Notebook 上に表示する。 """ img = cv2.imencode(format, img)[1] img = display.Image(img, **kwargs) display.display(img) for i in range(10, 30, 1): #iは5桁の数値 number = str("%05.f" %i) im = cv2.imread(r"C:\python\RUN0008\batched1\RUN0008_"+number+".bmp") .... edges = cv2.Canny(gauss,minVal,maxVal,SobelSize) #白色部分の座標取得 point = list(zip(*np.where(edges > 0))) for x,y in point: ans = str(x)+'\n' file = (r"C:\python\RUN0008\memotocsv\RUN0008_"+number+".csv") #末尾に追加 f = open(file, "a", encoding="utf_8") text = csv.writer(f, lineterminator="n") text.writerows(ans) f.close() cv2.imwrite(r"C:\python\RUN0008\test2\RUN0008_"+number+".bmp", edges) plt.show() print()
回答2件
あなたの回答
tips
プレビュー