マウスの左をクリック:左上頂点の決定
マウスの右をクリック:右下頂点の決定
何かのキーを押す:領域が限定
を用いて画像をぼかしたり左右反転した画像を表示させる
プログラムを作成しているのですが、現在のプログラムだと
画像の真ん中をクリックしても左上頂点は元画像の左上から表示されてしまいます。
ヒントとして、マウスをウィンドウ内の左端の画像内ではなく,中央や右側の画像内でクリックした場合は,その位置の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}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。