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

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

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

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

Python

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

Q&A

解決済

2回答

1056閲覧

2台のプロジェクターで出した単色2つの重なりをなくしたい

hikaparo

総合スコア17

OpenCV

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

Python

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

0グッド

0クリップ

投稿2018/09/27 07:06

pythonのopencvを使い2台のプロジェクターで投影した赤と青の単色の重なり部分を最終的にはなくしたいのですが、
まずは重なった部分の紫色?の部分を黒くしたいと考えています。
webカメラを使うことやグレイコード?などを駆使することは検索で調べてわかったのですが・・・。
いったいどういう風なプログラムを書くのかなどまったくわかんない状況で辛いです。
そもそもグレイコード?を使うかどうかも分からないです・・・><
どんな感じにしたいのかの図を掲載しておくのでなにかご教授いただければ本当にうれしいです。
webカメラといたしましてはELECOMのUCAM-C0220FEWHを用意してあります。

また、単色を出しているプログラムも画像の下に掲載しておきます。

イメージ説明

python

1import cv2 2import numpy as np 3 4 5w, h = 480, 360 6color = [255, 0, 0] 7img = np.full((h, w, 3), color, dtype=np.uint8) 8 9cv2.namedWindow('screen', cv2.WINDOW_NORMAL) 10cv2.setWindowProperty('screen', cv2.WND_PROP_FULLSCREEN, cv2.WINDOW_FULLSCREEN) 11cv2.imshow('screen', img) 12cv2.waitKey(0) 13cv2.destroyAllWindows() 14 15 16cv2.imwrite('img.png', img)

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

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

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

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

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

fana

2018/09/27 08:39

その絵だと平面に投影しているように見えますが,実際の投影先の形状は任意ですか?
hikaparo

2018/09/27 08:45

私が書いたこの絵は壁などへの平面への投射を想定しています。また、ゆくゆくは円柱などの丸みを帯びた側面への投射を考えています。
guest

回答2

0

処理時間を度外視したような話かもしれませんが,キャリブレーション的な事柄が不要な方法としては…

原始的には
投影する画像のある1部分を黒に変えてみてその行為を評価すること
を繰り返せば良いですね.
赤側の画像について言えば,投影像の変化は,

  1. 紫だった部分が青になる
  2. 赤だった部分が黒になる

のいずれか,あるいは複合でしょう.
2を避けつつ1だけが起きるように画像の一部を黒に差し替えることを,紫が完全に存在しなくなるまで繰り返せばよいです.
(黒くする領域の絞り込みは画像領域を4分木とかで管理すればよいかな?)
青側画像についても同様の事を行えば良いです.

投稿2018/09/28 01:45

編集2018/09/28 01:49
fana

総合スコア11634

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

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

fana

2018/09/28 01:48

> 紫だった部分が青になる おっと,赤側を黒色に変えるのだから「暗い青(青と黒の混じった色)になる」ですね. (画像を変化させる際の色は黒でなくてもよく,要は色の変化がカメラで明瞭に観測できればよいです.)
guest

0

ベストアンサー

コンピューター上からはプロジェクターでどのように写っているかは知る由がありませんから、なんらかのフィードバックが必要です。
例えば、カメラでプロジェクターが写している様子を撮影して、プロジェクターが投射している部分が画像のどのピクセルに対応するかの対応関係を求める必要があります。

いくつか方法があるようです。
質問にあるグレイコードの説明及び Python によるサンプルコードの記載がある 記事 を見つけましたが、どうでしょうか?

それなりに難しい問題であると思うので、まずは調べてみてください。

投稿2018/09/27 08:13

tiitoi

総合スコア21956

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

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

hikaparo

2018/09/27 08:49

なるほど!そういった概念的な考え方すらわからない状態だったのでとてもありがたいです。 参考記事のURLありがとうございます。 わからないなりにいじって格闘してみます!
tiitoi

2018/09/27 11:25

重なり部分を黒くするというのは応用になりますので、対応関係を求めて、まずは「プロジェクターが投影しているこの部分を黒くするには、画像のこのピクセルを黒くすればいい」といった問題から取り組んでみるとよいと思います。
hikaparo

2018/09/27 14:44

わかりました!黒くする方法を見つけるのではなく、 まずは黒くするピクセルの場所を求めるのが自分の課題ですね!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問