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

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

詳細はこちら
Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

Q&A

2回答

1038閲覧

画像の切り取った場所のみを変える

hikaru_love_n

総合スコア16

Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

0グッド

1クリップ

投稿2019/12/04 01:45

マウスの左をクリック:左上頂点の決定
マウスの右をクリック:右下頂点の決定
何かのキーを押す:領域が限定
を用いて画像をぼかしたり左右反転した画像を表示させる
プログラムを作成しているのですが、現在のプログラムだと
画像の真ん中をクリックしても左上頂点は元画像の左上から表示されてしまいます。
ヒントとして、マウスをウィンドウ内の左端の画像内ではなく,中央や右側の画像内でクリックした場合は,その位置のx座標はWや2*W分だけずれることに注意しましょう.
とあるのですが、どこをどうすればいいのかわかりません。

現在書いているプログラム

processing

1import processing.video.*; 2import gab.opencv.*; 3 4//変数宣言部 5 6Capture camera; 7int W = 640; 8int H = 480; 9 10OpenCV opencv; 11PImage flip, blur; 12 13PImage frame, background; 14 15void setup(){ 16 //初期化処理部 17 18 camera = new Capture(this, W, H, "Intel(R) RealSense(TM) 415 RGB", 60); 19 camera.start(); 20 size(100, 100); 21 surface.setResizable(true); 22 surface.setSize(3 * W, 2 * H); 23 24 opencv = new OpenCV(this, W, H); 25} 26 27void draw(){ 28 //繰返し処理部 29 30 if(!camera.available()) return; 31 camera.read(); 32 image(camera, 0, 0); 33 34 opencv.useColor(); 35 opencv.loadImage(camera); 36 37 int x = 0, y = 0, x1 = 0, y1 = 0; 38 if(mouseButton == LEFT){ 39 40 x = mouseX; 41 y = mouseY; 42 } 43 44 if(mouseButton == RIGHT){ 45 46 x1 = mouseX; 47 y1 = mouseY; 48 } 49 50 if(keyPressed == true){ 51 52 opencv.setROI(x, y, (x1 - x), (y1 - y)); 53 54 opencv.flip(OpenCV.HORIZONTAL); //左右反転 55 flip = opencv.getSnapshot(); //処理結果をflipに格納 56 image(flip, W, 0); //flipを表示ウィンドウに表示 57 opencv.blur(10); //ぼかし 58 blur = opencv.getSnapshot(); //処理結果をblurに格納 59 image(blur, 2 * W, 0); //blurを表示ウィンドウに表示*/ 60 61 opencv.releaseROI(); 62 } 63}

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

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

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

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

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

guest

回答2

0

プログラム中にprint()とかprintln()とかを適当に突っ込んでx,yとかの値がどうなっているか調べてみるのがよいのでは、と思いますが。

ところで、このプログラムに、マウスがクリックされた位置を表示する機能はないように思いますが、

左上頂点は元画像の左上から表示されてしまいます。

とはどうなることを言っていますか?

画像の真ん中をクリックしても

そのプログラムに「クリック」を検出する機能はありません。マウスボタンで最後に押されたのが右ボタンだった場合とか左ボタンだった場合、というのは見ていますが...
mousePressedも検査するか、あるいはハンドラとしてmousePressed()関数を定義するかしないと。

投稿2019/12/04 14:05

thkana

総合スコア7703

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

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

0

ちょっとカメラなどがなくて挙動確認できないのですが

画像の真ん中をクリックしても左上頂点は元画像の左上から表示されてしまいます。

ヒントとして、マウスをウィンドウ内の左端の画像内ではなく,中央や右側の画像内でクリックした場合は,その位置のx座標はWや2*W分だけずれることに注意しましょう.

とのことなので、原点(0, 0)がどこにあるかの問題かと思います
文章から、真ん中が原点と左上が原点になってるっぽいのでW/2足すなり引くなり必要になるかと思います

投稿2019/12/04 02:13

rururu3

総合スコア5545

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問