[Phission-cvs] phission/examples/java/ArmInterface/src ArmInterface.java, 1.19, 1.20
Brought to you by:
pthoren
From: Philip T. <pt...@us...> - 2007-07-26 23:47:55
|
Update of /cvsroot/phission/phission/examples/java/ArmInterface/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv27149/src Modified Files: ArmInterface.java Log Message: Updated the cursors to have more white around them Added a Region of Interest rectangle to the display Added a sendMouseEvent for when the dwell is activated Addec canon camera settings Index: ArmInterface.java =================================================================== RCS file: /cvsroot/phission/phission/examples/java/ArmInterface/src/ArmInterface.java,v retrieving revision 1.19 retrieving revision 1.20 diff -C2 -d -r1.19 -r1.20 *** ArmInterface.java 20 Jul 2007 23:27:06 -0000 1.19 --- ArmInterface.java 26 Jul 2007 23:47:53 -0000 1.20 *************** *** 33,37 **** private String m_title = null; /* The rectangle that follows the mouse */ ! private JPanel m_rectangle_panel = null; /* The container object for the video display and the rectangle. Allows * placing the rectangle on top of the video display */ --- 33,39 ---- private String m_title = null; /* The rectangle that follows the mouse */ ! private JPanel m_mouse_panel = null; ! /* The rectangle that represents the ROI */ ! private JPanel m_roi_panel = null; /* The container object for the video display and the rectangle. Allows * placing the rectangle on top of the video display */ *************** *** 77,81 **** private boolean m_clover_cam = false; private boolean m_lorex_cam = false; ! private boolean m_orb_cam = true; /* Phission variables */ --- 79,84 ---- private boolean m_clover_cam = false; private boolean m_lorex_cam = false; ! private boolean m_orb_cam = false; ! private boolean m_canon_cam = true; /* Phission variables */ *************** *** 101,106 **** /* histogram/training area variables */ ! private int m_box_width = m_cap_width / 22; ! private int m_box_height = m_cap_height / 22; private int m_box_adjust = 3; private int m_box_x1 = 0; --- 104,109 ---- /* histogram/training area variables */ ! private int m_box_width = m_cap_width / 32; ! private int m_box_height = m_cap_width / 32; private int m_box_adjust = 3; private int m_box_x1 = 0; *************** *** 111,115 **** /* Region of interest variables */ private int m_roi_width = m_cap_width / 14; ! private int m_roi_height = m_cap_height / 14; private int m_roi_adjust = 3; private int m_roi_x1 = 0; --- 114,118 ---- /* Region of interest variables */ private int m_roi_width = m_cap_width / 14; ! private int m_roi_height = m_cap_width / 14; private int m_roi_adjust = 3; private int m_roi_x1 = 0; *************** *** 121,126 **** private boolean m_use_trained_color = false; - private Rectangle2D m_mouse_rect = new Rectangle2D.Double(0,0,0,0); - private SWIGTYPE_p_phDrawing_t m_quadrant_drawing; --- 124,127 ---- *************** *** 265,281 **** // Allocate the panel that will be transparent and let us draw on it // without having it overwritten by the video ! this.m_rectangle_panel = new JPanel(); ! this.m_rectangle_panel.setOpaque(false); ! this.m_rectangle_panel.setVisible(false); ! this.m_rectangle_panel.setBackground(new Color(255,0,0,90)); ! this.m_rectangle_panel.setSize(0,0); ! this.m_rectangle_panel.setBorder( BorderFactory.createMatteBorder(2, 2, 2, 2, Color.red)); // Add the components to the layout manager // The Mouse rectangle follower ! this.m_layers.add(this.m_rectangle_panel,new Integer(0),1); // The PhissionDisplayPanel ! this.m_layers.add(this.m_video,new Integer(0),2); } --- 266,293 ---- // Allocate the panel that will be transparent and let us draw on it // without having it overwritten by the video ! this.m_mouse_panel = new JPanel(); ! this.m_mouse_panel.setOpaque(false); ! this.m_mouse_panel.setVisible(false); ! this.m_mouse_panel.setBackground(new Color(255,0,0,90)); ! this.m_mouse_panel.setSize(0,0); ! this.m_mouse_panel.setBorder( BorderFactory.createMatteBorder(2, 2, 2, 2, Color.red)); + // Allocate a panel that will show the current ROI for blob searching + this.m_roi_panel = new JPanel(); + this.m_roi_panel.setOpaque(false); + this.m_roi_panel.setVisible(false); + this.m_roi_panel.setBackground(new Color(0,0,0,0)); + this.m_roi_panel.setSize(0,0); + this.m_roi_panel.setBorder( + BorderFactory.createMatteBorder(2, 2, 2, 2, Color.green)); + // Add the components to the layout manager // The Mouse rectangle follower ! this.m_layers.add(this.m_mouse_panel,new Integer(0),1); ! // Add the ROI rectangle panel ! this.m_layers.add(this.m_roi_panel,new Integer(0),2); // The PhissionDisplayPanel ! this.m_layers.add(this.m_video,new Integer(0),3); } *************** *** 371,378 **** this.m_capture = new V4LCapture(); this.m_pipeline = new phPipeline(); ! //this.m_hist = new histogram_Filter(); ! //this.m_hist_data = new phHistogramData(); ! //this.m_segment = new blob_Filter(); ! //this.m_blob_data = new phBlobData(); //this.m_gauss = new gaussian3x3_Filter(); //this.m_median = new medianNxN_Filter(3); --- 383,390 ---- this.m_capture = new V4LCapture(); this.m_pipeline = new phPipeline(); ! this.m_hist = new histogram_Filter(); ! this.m_hist_data = new phHistogramData(); ! this.m_segment = new blob_Filter(); ! this.m_blob_data = new phBlobData(); //this.m_gauss = new gaussian3x3_Filter(); //this.m_median = new medianNxN_Filter(3); *************** *** 382,392 **** //this.m_orig = new original_Filter(); //this.m_graphSegment = new graphSegmentation_Filter(); ! this.m_convert_rgb = new convert_Filter(phImageType.phImageRGB24.swigValue()); ! //this.m_convert_hsv = new convert_Filter(phImageType.phImageHSV24.swigValue()); ! //this.m_convert_yuv = new convert_Filter(phImageType.phImageYUV24.swigValue()); //capture setup if (this.m_clover_cam) { this.m_capture.setBrightness((short)(0.47 * 65535)); this.m_capture.setContrast((short)(0.35 * 65535)); --- 394,404 ---- //this.m_orig = new original_Filter(); //this.m_graphSegment = new graphSegmentation_Filter(); ! this.m_convert_hsv = new convert_Filter(phImageType.phImageHSV24.swigValue()); ! this.m_convert_yuv = new convert_Filter(phImageType.phImageYUV24.swigValue()); //capture setup if (this.m_clover_cam) { + this.m_capture.setFormat(phImageType.phImageRGB24.swigValue()); this.m_capture.setBrightness((short)(0.47 * 65535)); this.m_capture.setContrast((short)(0.35 * 65535)); *************** *** 396,399 **** --- 408,412 ---- else if (this.m_lorex_cam) { + this.m_capture.setFormat(phImageType.phImageRGB24.swigValue()); this.m_capture.setBrightness((short)(0.56 * 65535)); this.m_capture.setContrast((short)(0.40 * 65535)); *************** *** 403,406 **** --- 416,421 ---- else if (this.m_orb_cam) { + this.m_convert_rgb = new convert_Filter(phImageType.phImageRGB24.swigValue()); + this.m_capture.setFormat(phImageType.phImageYUV420p.swigValue()); this.m_capture.setBrightness((short)(0.40 * 65535)); this.m_capture.setContrast((short)(0.45 * 65535)); *************** *** 408,411 **** --- 423,439 ---- this.m_capture.setColor((short)(0.67 * 65535)); } + else if (this.m_canon_cam) + { + this.m_capture.setFormat(phImageType.phImageRGB24.swigValue()); + this.m_capture.setBrightness((short)(0.56 * 65535)); + this.m_capture.setContrast((short)(0.40 * 65535)); + this.m_capture.setHue((short)(0.40 * 65535)); + this.m_capture.setColor((short)(0.67 * 65535)); + } + + else + { + this.m_capture.setFormat(phImageType.phImageRGB24.swigValue()); + } // These are disabled filters by default *************** *** 455,460 **** this.m_capture.set(w,h,path); this.m_capture.setChannel(1); - //this.m_capture.setFormat(phImageType.phImageRGB24.swigValue()); - this.m_capture.setFormat(phImageType.phImageYUV420p.swigValue()); // Add all the threaded objects to the phission system --- 483,486 ---- *************** *** 785,798 **** { case 0: /* RGB */ ! this.m_convert_hsv.disable(); ! this.m_convert_yuv.disable(); break; case 1: /* HSV */ ! this.m_convert_yuv.disable(); ! this.m_convert_hsv.enable(); break; case 2: /* YUV */ ! this.m_convert_hsv.disable(); ! this.m_convert_yuv.enable(); break; } --- 811,830 ---- { case 0: /* RGB */ ! if (this.m_convert_hsv != null) ! this.m_convert_hsv.disable(); ! if (this.m_convert_yuv != null) ! this.m_convert_yuv.disable(); break; case 1: /* HSV */ ! if (this.m_convert_yuv != null) ! this.m_convert_yuv.disable(); ! if (this.m_convert_hsv != null) ! this.m_convert_hsv.enable(); break; case 2: /* YUV */ ! if (this.m_convert_hsv != null) ! this.m_convert_hsv.disable(); ! if (this.m_convert_yuv != null) ! this.m_convert_yuv.enable(); break; } *************** *** 853,857 **** { ! Point p = SwingUtilities.convertPoint((Component)this, e.getPoint(), (Component)this.m_layers); --- 885,889 ---- { ! Point p = SwingUtilities.convertPoint((Component)e.getSource(), e.getPoint(), (Component)this.m_layers); *************** *** 868,885 **** /* Set the location and size of the panel */ /* This will cause the panel to follow the mouse */ ! this.m_rectangle_panel.setLocation((int)(p.getX() - (s.getX()/2)), ! (int)(p.getY() - (s.getY()/2))); ! this.m_rectangle_panel.setSize((int)s.getX(),(int)s.getY()); } /* -------------------------------------------------------------------- */ ! /* Resize the rectangle that follows the mouse and represents the area of ! * the image where the histogram gets its data */ ! void resizeMouseRectangle( ) { ! Point loc = this.m_rectangle_panel.getLocation(); ! Dimension sz = this.m_rectangle_panel.getSize(); ! /* * This will make the histogram box follow the mouse; --- 900,916 ---- /* Set the location and size of the panel */ /* This will cause the panel to follow the mouse */ ! this.m_mouse_panel.setLocation((int)(p.getX() - (s.getX()/2)), ! (int)(p.getY() - (s.getY()/2))); ! this.m_mouse_panel.setSize((int)s.getX(),(int)s.getY()); } /* -------------------------------------------------------------------- */ ! void moveROIRectangle(Point roi_p) { ! ! Point p = SwingUtilities.convertPoint((Component)this, ! roi_p, ! (Component)this.m_layers); /* * This will make the histogram box follow the mouse; *************** *** 887,913 **** * this.setHistogramBoxMidPoint(this.translateToVideoScale(p)); */ ! /* Make sure we're in the correct scale. ! * The box width and height changed prior to the call to this method and ! * we need to convert from the video scale to the scale of the interface ! */ Point s = this.translateFromVideoScale(this.m_layers, ! this.m_box_width, ! this.m_box_height); ! ! /* calculate half the rectangle dimensions */ ! double half_w = (sz.width + (sz.width % 2)) / 2; ! double half_h = (sz.height + (sz.height % 2)) / 2; ! ! ! double newx = (loc.getX() + half_w) - (s.getX()/2); ! double newy = (loc.getY() + half_h) - (s.getY()/2); ! /* Set the new top-left coordinate of the rectangle */ ! this.m_rectangle_panel.setLocation((int)newx,(int)newy); ! /* Set the new size of the panel */ ! this.m_rectangle_panel.setSize((int)s.getX(),(int)s.getY()); } ! /* -------------------------------------------------------------------- */ /* adjust the size of the region of interest; increase/decrease the area --- 918,955 ---- * this.setHistogramBoxMidPoint(this.translateToVideoScale(p)); */ ! /* Get the width/height of the box in the scale of the interface */ Point s = this.translateFromVideoScale(this.m_layers, ! this.m_roi_width, ! this.m_roi_height); ! ! /* Set the location and size of the panel */ ! this.m_roi_panel.setLocation((int)(p.getX() - (s.getX()/2)), ! (int)(p.getY() - (s.getY()/2))); ! this.m_roi_panel.setSize((int)s.getX(),(int)s.getY()); ! } ! ! /* -------------------------------------------------------------------- */ ! /* Adjust the size of the area that is being used to train on an object */ ! void resizeTrainingBox( int adjust ) ! { ! /* Change the size first */ ! this.m_box_width += adjust; ! this.m_box_height += adjust; ! if (this.m_box_width >= this.m_cap_width) ! this.m_box_width = (this.m_cap_width - this.m_box_adjust); ! if (this.m_box_height >= this.m_cap_height) ! this.m_box_height = (this.m_cap_height - this.m_box_adjust); ! if (this.m_box_width <= 0) ! this.m_box_width = this.m_box_adjust; ! if (this.m_box_height <= 0) ! this.m_box_height = this.m_box_adjust; ! ! this.resizeRectangle( this.m_mouse_panel, ! this.m_box_width, this.m_box_height ); ! } ! /* -------------------------------------------------------------------- */ /* adjust the size of the region of interest; increase/decrease the area *************** *** 918,925 **** /* Change the size first */ ! if ((this.m_roi_width + this.m_roi_adjust) < this.m_cap_width) ! this.m_roi_width += this.m_roi_adjust; ! if ((this.m_roi_height + this.m_roi_adjust) < this.m_cap_height) ! this.m_roi_height += this.m_roi_adjust; int x1 = (r.getX1() + adjust); --- 960,974 ---- /* Change the size first */ ! this.m_roi_width += adjust; ! this.m_roi_height += adjust; ! ! if (this.m_roi_width >= this.m_cap_width) ! this.m_roi_width = (this.m_cap_width - this.m_roi_adjust); ! if (this.m_roi_height >= this.m_cap_height) ! this.m_roi_height = (this.m_cap_height - this.m_roi_adjust); ! if (this.m_roi_width <= 0) ! this.m_roi_width = this.m_roi_adjust; ! if (this.m_roi_height <= 0) ! this.m_roi_height = this.m_roi_adjust; int x1 = (r.getX1() + adjust); *************** *** 931,934 **** --- 980,1018 ---- this.m_segment.setROI(n); + + this.resizeRectangle( this.m_roi_panel, + this.m_roi_width, this.m_roi_height ); + } + + /* -------------------------------------------------------------------- */ + /* Resize the rectangle that follows the mouse and represents the area of + * the image where the histogram gets its data */ + void resizeRectangle( JPanel rectangle, + int width, + int height ) + { + Point loc = rectangle.getLocation(); + Dimension sz = rectangle.getSize(); + + /* Make sure we're in the correct scale. + * The box width and height changed prior to the call to this method and + * we need to convert from the video scale to the scale of the interface + */ + Point s = this.translateFromVideoScale(rectangle.getParent(), + width,height); + + /* calculate half the rectangle dimensions */ + double half_w = (sz.width + (sz.width % 2)) / 2; + double half_h = (sz.height + (sz.height % 2)) / 2; + + + double newx = (loc.getX() + half_w) - (s.getX()/2); + double newy = (loc.getY() + half_h) - (s.getY()/2); + + /* Set the new top-left coordinate of the rectangle */ + rectangle.setLocation((int)newx,(int)newy); + + /* Set the new size of the panel */ + rectangle.setSize((int)s.getX(),(int)s.getY()); } *************** *** 1137,1142 **** if (this.m_mouse_dwell_count == this.m_mouse_dwell_trigger) { /* this.println("Dwell Trigger"); */ ! this.mouseTrain( this.m_last_xy ); } } --- 1221,1229 ---- if (this.m_mouse_dwell_count == this.m_mouse_dwell_trigger) { + this.sendMousePressed( (int)this.m_mouse_xy.getX(), + (int)this.m_mouse_xy.getY(), + MouseEvent.BUTTON1 ); /* this.println("Dwell Trigger"); */ ! //this.mouseTrain( this.m_last_xy ); } } *************** *** 1279,1282 **** --- 1366,1370 ---- else { + this.moveROIRectangle( e.getPoint() ); /* move the rectangle to where the mouse is */ this.moveMouseRectangle(e); *************** *** 1285,1288 **** --- 1373,1391 ---- } } + + /* -------------------------------------------------------------------- */ + public void sendMousePressed( int x, int y, int button ) + { + MouseEvent me = new MouseEvent(this, // Component source + MouseEvent.MOUSE_PRESSED,// int id + 0, // long when + 0, // int modifiers + x, // int x + y, // int y + 1, // int clickCount + false, // boolean popupTrigger + button ); // int button + this.processMouseEvent(me); + } /* -------------------------------------------------------------------- */ *************** *** 1447,1451 **** this.m_box_width = 16; this.m_box_height = 16; ! this.resizeMouseRectangle(); } break; --- 1550,1556 ---- this.m_box_width = 16; this.m_box_height = 16; ! this.resizeRectangle( this.m_mouse_panel, ! this.m_box_width, ! this.m_box_height ); } break; *************** *** 1458,1462 **** this.m_box_width = 24; this.m_box_height = 24; ! this.resizeMouseRectangle(); } break; --- 1563,1569 ---- this.m_box_width = 24; this.m_box_height = 24; ! this.resizeRectangle( this.m_mouse_panel, ! this.m_box_width, ! this.m_box_height ); } break; *************** *** 1519,1530 **** else { ! /* Change the size first */ ! if ((this.m_box_width + this.m_box_adjust) < this.m_cap_width) ! this.m_box_width += this.m_box_adjust; ! if ((this.m_box_height + this.m_box_adjust) < this.m_cap_height) ! this.m_box_height += this.m_box_adjust; ! ! /* Then apply the size change to the rect */ ! this.resizeMouseRectangle(); } } --- 1626,1631 ---- else { ! /* apply the size change to the rect */ ! this.resizeTrainingBox( this.m_box_adjust ); } } *************** *** 1545,1556 **** else { ! /* Change the size first */ ! if ((this.m_box_width - this.m_box_adjust) > 1) ! this.m_box_width -= this.m_box_adjust; ! if ((this.m_box_height - this.m_box_adjust) > 1) ! this.m_box_height -= this.m_box_adjust; ! ! /* Then apply the size change to the rect */ ! this.resizeMouseRectangle(); } } --- 1646,1651 ---- else { ! /* apply the size change to the rect */ ! this.resizeTrainingBox(-1 * this.m_box_adjust); } } *************** *** 1579,1592 **** if (e.isControlDown()) { ! if (this.m_rectangle_panel.isVisible()) { ! this.m_rectangle_panel.setOpaque(false); ! this.m_rectangle_panel.setVisible(false); } else { ! this.m_rectangle_panel.setOpaque(true); ! this.m_rectangle_panel.setVisible(true); } } else --- 1674,1698 ---- if (e.isControlDown()) { ! if (this.m_mouse_panel.isVisible()) { ! this.m_mouse_panel.setOpaque(false); ! this.m_mouse_panel.setVisible(false); } else { ! this.m_mouse_panel.setOpaque(true); ! this.m_mouse_panel.setVisible(true); } + if (this.m_roi_panel.isVisible()) + { + this.m_roi_panel.setOpaque(false); + this.m_roi_panel.setVisible(false); + } + else + { + this.m_roi_panel.setOpaque(true); + this.m_roi_panel.setVisible(true); + } + } else *************** *** 1899,1904 **** /* initialize the ArmInterface to capture at 640x480 using * /dev/video0 and give the window a title of ArmInterface */ ! ArmInterface disp = new ArmInterface(320,240, ! "/dev/video1", "ArmInterface" ); phBlobData blob_data = null; --- 2005,2010 ---- /* initialize the ArmInterface to capture at 640x480 using * /dev/video0 and give the window a title of ArmInterface */ ! ArmInterface disp = new ArmInterface(640,480, ! "/dev/video0", "ArmInterface" ); phBlobData blob_data = null; |