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

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

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

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

Python

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

Q&A

解決済

cv2circleで前に描画した円を消す方法

egg
egg

総合スコア1

OpenCV

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

Python

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

1回答

0グッド

0クリップ

265閲覧

投稿2023/01/18 07:47

前提

Tobii Pro Sparkを使い視点の描画を行っています。描画することは出来たのですが前に描画した円を消す方法がわからず質問します。

実現したいこと

・前に描画した円を消す
・描画されている円の座標をウインドウ上に表示

実際の結果を載せます。

イメージ説明

該当のソースコード

Python

1 2import tobii_research as tr 3import sys 4import time 5import numpy as np 6import cv2 7 8img = np.zeros((1200,1920,3), np.uint8) 9img_r = np.zeros((1200,1920,3), np.uint8) 10img_l = np.zeros((1200,1920,3), np.uint8) 11 12cv2.imshow("MyEyeTrack", img) 13cv2.imshow("MyEyeTrack", img_r) 14cv2.imshow("MyEyeTrack", img_l) 15 16eyetracker_address = "tobii-prp://TPE01-100202141575" 17eyetracker = tr.EyeTracker(eyetracker_address) 18 19def MyCallBack(gaze_data): 20 time_stamp = gaze_data.device_time_stamp 21 left_point = gaze_data.left_eye.gaze_point.position_on_display_area 22 right_point = gaze_data.right_eye.gaze_point.position_on_display_area 23 center_x = (int)(((left_point[0] + right_point[0]) / 2) * 1920) 24 center_y = (int)(((left_point[1] + right_point[1]) / 2) * 1200) - 50 25 R_x = (int)((right_point[0]) * 1920) 26 L_x = (int)((left_point[0]) * 1200) 27 R_y = (int)((right_point[1]) * 1920) 28 L_y = (int)((left_point[1]) * 1200) 29 print(left_point) 30 print(right_point) 31 print("center_x:", ((left_point[0] + right_point[0]) / 2)) 32 print("center_y:", ((left_point[1] + right_point[1]) / 2)) 33 print("\n") 34 35 36 global img, img_r, img_l 37 img = cv2.circle(img, (center_x, center_y), 10, (255, 255, 255), -1) 38 39 img_r = cv2.circle(img, (R_x, R_y), 10, (255, 0, 0), -1) 40 img_l = cv2.circle(img, (L_x, L_y), 10, (0, 0, 255), -1) 41 42eyetracker.subscribe_to(tr.EYETRACKER_GAZE_DATA, MyCallBack, as_dictionary=False) 43 44while(True): 45 key = cv2.waitKey(100) 46 cv2.imshow("MyEyeTrack", img_r) 47 cv2.imshow("MyEyeTrack", img_l) 48 49 # if Key is "ESC" 50 if key == 27: 51 eyetracker.unsubscribe_from(tr.EYETRACKER_GAZE_DATA, MyCallBack) 52 cv2.destroyAllWindows() 53 sys.exit() 54 55

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

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

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

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

  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

fana

2023/01/18 08:26

円を描画する前に,画像バッファの内容を適当にクリアすればよい(:黒で全体を塗りつぶすことに相当するようなことをすればよい)のではないでしょうか.

回答1

0

ベストアンサー

cv2 の circleなどのコマンドは画像そのものに変更を加えてしまうので、書いた点を取り除くなどの操作はできません。

方法としては、

  • 前に書いた点を上書きする
    例のように黒い画面であれば黒く塗り潰すことになります。
  • 元の画像を保存しておいて置き換える。
  • 画像を変更するのでなく、同サイズで透明な画像を用意してそこに描画し、重ねて表示する

などが考えられます。

投稿2023/01/18 10:43

TakaiY

総合スコア10940

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

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

このような回答には修正を依頼しましょう。

回答へのコメント

egg

2023/01/19 01:41

回答ありがとうございます。 いただいた例をもとに修正してみます。

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

ただいまの回答率
86.02%

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

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

質問する

関連した質問

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

OpenCV

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

Python

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