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

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

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

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

OpenCV

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

5522閲覧

【Python 】.csvファイルの書き込みが上手くいきません

jami_jami

総合スコア0

CSV

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

OpenCV

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

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2020/10/26 14:58

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
■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■■
ご教授お願い致します。

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

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

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

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

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

guest

回答1

0

エラーメッセージを拝見すると、「csv.writer」の引数に問題があるようですね。
「open」と連携させた場合、一般的な書式はこんな感じではなかったでしょうか?

file = open('hist.csv', 'w', encoding='utf-8') w = csv.writer(file)

投稿2020/10/26 15:42

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問