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

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

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

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

Python

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

Q&A

解決済

1回答

1769閲覧

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

egg

総合スコア1

OpenCV

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

Python

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

0グッド

0クリップ

投稿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

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

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

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

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

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

fana

2023/01/18 08:26

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

回答1

0

ベストアンサー

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

方法としては、

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

などが考えられます。

投稿2023/01/18 10:43

TakaiY

総合スコア12765

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

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

egg

2023/01/19 01:41

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問