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

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

ただいまの
回答率

91.25%

  • Python

    4203questions

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

  • OpenCV

    672questions

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

  • CSV

    426questions

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

Python import csvでの'str'ではなく、バイトのようなオブジェクトとは?

解決済

回答 4

投稿

  • 評価
  • クリップ 0
  • VIEW 62

matilda007

score 8

Pythonの入門でopenCVでwebcamを使って顔を検知し、顔の位置情報をcsvファイルに書き込むプログラムを書いているのですが下記のerrorがでます。。。
'str'ではなく、バイトのようなオブジェクトとは何なのかよくわかりません。。。
解決策のご教示よろしくお願いします。

import cv2
import os
import csv

has_csv = os.path.isfile("csv/position.csv")
if has_csv == True:
    os.remove("csv/position.csv")

f = open('csv/position.csv', 'ab') #ファイルが無ければ作る、の'a'を指定します
csvWriter = csv.writer(f)

if __name__ == '__main__':
    # 定数定義
    ESC_KEY = 27     # Escキー
    INTERVAL= 33     # 待ち時間
    FRAME_RATE = 30  # fps

    ORG_WINDOW_NAME = "org"
    GAUSSIAN_WINDOW_NAME = "gaussian"

    DEVICE_ID = 0

    # 分類器の指定
    cascade_file = "data/haarcascade_frontalface_alt2.xml"
    cascade = cv2.CascadeClassifier(cascade_file)

    # カメラ映像取得
    cap = cv2.VideoCapture(DEVICE_ID)

    # 初期フレームの読込
    end_flag, c_frame = cap.read()
    height, width, channels = c_frame.shape

    # ウィンドウの準備
    cv2.namedWindow(ORG_WINDOW_NAME)
    cv2.namedWindow(GAUSSIAN_WINDOW_NAME)

    # 変換処理ループ
    while end_flag == True:

        # 画像の取得と顔の検出
        img = c_frame
        img_gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
        face_list = cascade.detectMultiScale(img_gray, minSize=(100, 100))
        csvWriter.writerow(face_list)
        print(face_list)

        # 検出した顔に印を付ける
        for (x, y, w, h) in face_list:
            color = (0, 0, 225)
            pen_w = 3
            cv2.rectangle(img_gray, (x, y), (x+w, y+h), color, thickness = pen_w)

        # フレーム表示
        cv2.imshow(ORG_WINDOW_NAME, c_frame)
        cv2.imshow(GAUSSIAN_WINDOW_NAME, img_gray)

        # Escキーで終了
        key = cv2.waitKey(INTERVAL)
        if key == ESC_KEY:
            break

        # 次のフレーム読み込み
        end_flag, c_frame = cap.read()

    # 終了処理
    cv2.destroyAllWindows()
    cap.release()
opencv_test $ python sample.py
Traceback (most recent call last):
  File "sample.py", line 76, in <module>
    csvWriter.writerow(face_list)
TypeError: a bytes-like object is required, not 'str'
Cleaned up camera.
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 4

checkベストアンサー

+1

f = open('csv/position.csv', 'ab')でbを指定しているからです。bを取ればstrを書き込めるようになります。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/12/10 15:12

    ありがとうございます!!動きました!!

    キャンセル

+1

[追記]
wオプションだとファイルを上書き、aオプションだとファイルに追記されます。特に指定がなかったのでwオプションを使うようにと回答しています。

ファイルへ書き込みを行いたい場合は

f = open('csv/position.csv', 'ab') #ファイルが無ければ作る、の'a'を指定します


ではなく以下のようにすればよいと思います。

f = open('csv/position.csv', 'w')

詳しくは下記リンクを参照してください。
python - open関数

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/12/10 15:11

    ありがとうございます!!動きました!!

    キャンセル

0

f = open('csv/position.csv', 'b')

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

f = open('csv/position.csv', 'a')

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

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

ただいまの回答率

91.25%

関連した質問

  • 解決済

    opencvの動画再生について

    opencvで動画を再生させるときにキー入力によって再生する位置を変えようとしています。コードは以下のようになっています。エラーなく動きますがとても動画の速さが遅くなります。またキ

  • 受付中

    raspberrypi+python+openCV+WebCam 動画顔認識してくれません

    前提・実現したいこと USB CAM からの動画をキャプチャーし、顔認識し、四角い枠で囲みたいです。 発生している問題・エラーメッセージ 下記コードで、facer

  • 解決済

    wxPythonにおいて、USBカメラの画像表示をしたい

    前提・実現したいこと ここ一週間くらい、teratailの皆様の力を借りながら、python上で動く動画や画像を表示できるGUIを作っています。画像は何とか表示でき、画像とパネル

  • 解決済

    opencv 円検出

    前提・実現したいこと 動画を読み込みその動画から円を検出して描画するプログラムを書こうと思っています。 発生している問題・エラーメッセージ 動画は読み込んで出力することができま

  • 解決済

    opencv python 画像処理

    # -*- coding: utf-8 -*- import cv2 import numpy as np # フレーム差分の計算 def frame_sub(src1, src

  • 解決済

    PythonとOpenCVを用いて物体を白色で抽出したい

    前提・実現したいこと 最近、趣味でプログラミングを始めました。 PythonとOpenCVを用いて何も映っていない背景と物体を映した前景で差分をとり、物体だけを白色で抽出したいです

  • 解決済

    OpenCVを使った笑顔検出での問題

    前提・実現したいこと OpenCVで元からあるサンプルコード「smiledetect.cpp」を用いて笑顔検出のシステムを作っています。 検出機能を実装中に以下の問題が発生しました

  • 受付中

    動画から連番で画像を保存するプログラム

    前提・実現したいこと 動画(wmvファイル)を読み込んで、静止画(jpgファイル)を連番で保存したいです。 発生している問題・エラーメッセージ 画像が出力されない 該当のソ

同じタグがついた質問を見る

  • Python

    4203questions

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

  • OpenCV

    672questions

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

  • CSV

    426questions

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