🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

OpenCV

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

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

解決済

1回答

1051閲覧

DataFrameからrowごとに座標データを抽出して四角形描画したいです

chgrios

総合スコア70

Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

OpenCV

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

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Python

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

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

0クリップ

投稿2019/12/11 03:20

x1 y1 x2 y2
0 1018.352173 277.667938 1156.253662 758.615356
1 1018.830078 277.789551 1155.897339 759.046204
2 1019.019714 277.591095 1155.423828 758.882935
3 1018.988342 277.358887 1155.269409 758.490051
4 1018.760864 277.602814 1155.293457 758.092346
... ... ... ... ...
61 1022.978577 277.880737 1152.985962 764.742065
62 1022.341248 275.849304 1152.556641 765.017395
63 1021.935974 275.209473 1152.962402 764.126953
64 1022.540039 275.527496 1153.108154 763.674866
65 1021.412781 276.075317 1153.943359 763.461243

図のような二点の座標が格納されたデータフレームがあるとして、これらを、rowごとに四角形プロットしたいです。
そもそもPandasデータフレームの扱いがよくわからないのですが、for文でrowごとにスライスしてから抽出するのがよいのか、それともpandas特有のまとめて処理する事ができる書き方があるのか、どのようにするのがいちばんシンプルでしょうか?

import numpy as np import cv2 import pandas as pd df = pd.read_csv('test.csv') # 上の座標データ img = np.zeros((480,640,3), np.uint8) cv2.rectangle(img, df['x1'],df['y2'], (255,0,0))#これだとエラーになる >>SystemError: new style getargs format but argument is not a tuple

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

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

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

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

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

guest

回答1

0

ベストアンサー

iturtuples() で各行を取得して、行ごとに cv2.rectangle を呼び出す必要があります。

python

1import numpy as np 2import cv2 3import pandas as pd 4from io import StringIO 5 6data = """x1 y1 x2 y2 70 1018.352173 277.667938 1156.253662 758.615356 81 1018.830078 277.789551 1155.897339 759.046204 92 1019.019714 277.591095 1155.423828 758.882935 103 1018.988342 277.358887 1155.269409 758.490051 114 1018.760864 277.602814 1155.293457 758.092346 12""" 13 14df = pd.read_csv(StringIO(data), delim_whitespace=True) 15 16img = np.zeros((480,640,3), np.uint8) 17 18for row in df.itertuples(): 19 x, y = int(row.x1), int(row.y1) 20 w, h = int(row.x2 - row.x1), int(row.y2 - row.y1) 21 cv2.rectangle(img, (x, y), (w, h), (255,0,0)) 22 23cv2.imwrite("result.png", img)

投稿2019/12/11 04:20

tiitoi

総合スコア21956

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問