windows10 python3.8にて画像処理のプログラムを作成しています.
画像から画像の数値データを抽出し、抽出した画像データからヒストグラムのデータを抽出したいと考えています.
領域はパラメータファイルから別に指定しています.しかしcsvファイルの書き込みが上手くいきません.ファイル自体は生成されているのですが、中身がありません.以前idtファイルへの書き込みはできました.
以下該当プログラム
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
from IPython.display import Image
import cv2
import numpy as np
import math
import matplotlib.pyplot as plt
import csv
imgPath = "img/img.jpg"
img = cv2.imread(imgPath)
img_rgb = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
#ファイル読み込み
path = './box.par'
pardata=[]
with open(path) as f:
for s_line in f:
pardata=s_line.split(",")
boxFromX=int(pardata[0])
boxFromY=int(pardata[1])
boxToX=int(pardata[0])+int(pardata[2])
boxToY=int(pardata[1])+int(pardata[3])
#切り出し実行(配列のスライス)
imgBox = img_rgb[boxFromY: boxToY, boxFromX: boxToX]
b, g, r = imgBox[:,:,0], imgBox[:,:,1], imgBox[:,:,2]
hist_b = cv2.calcHist([b],[0],None,[256],[0,256]) #青のヒストグラム
hist_g = cv2.calcHist([g],[0],None,[256],[0,256]) #緑のヒストグラム
hist_r = cv2.calcHist([r],[0],None,[256],[0,256]) #赤のヒストグラム
#ヒストグラムのグラフ描画
color = ('b','g','r')
for i,col in enumerate(color):
histr = cv2.calcHist([imgBox],[i],None,[256],[0,256])
plt.plot(histr,color = col)
plt.xlim([0,256])
plt.show()
**file = open('hist.csv', 'w', encoding='utf-8')
w=csv.writer("hist\n R:\n{}\n, \nG:{}\n, \nB:{}\n".format(hist_r, hist_g, hist_b))
n = 240
w=csv.writeros("hist_r[{}]] = {}".format(n, hist_b[n][0]))
w=csv.writeros("hist_g[{}]] = {}".format(n, hist_b[n][0]))
w=csv.writeros("hist_b[{}]] = {}".format(n, hist_b[n][0]))**
file = open('imgdata.idt', 'w', encoding='utf-8')
for i in range(imgBox.shape[0]):
for j in range(imgBox.shape[1]):
file.write("[{},{},{}],".format(img_rgb[i][j][0],img_rgb[i][j][1],img_rgb[i][j][2]))
file.write("\n")
file.close()
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
以下エラーメッセージ
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
Traceback (most recent call last):
File "imgProc2.py", line 83, in <module>
w=csv.writer("hist\n R:\n{}\n, \nG:{}\n, \nB:{}\n".format(hist_r, hist_g, hist_b))
TypeError: argument 1 must have a "write" method
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
ご教授お願い致します。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。