Go to Post "Field orientation is like a homing pidgeon that can fly backwards." - LostWolf [more]
Home
Go Back   Chief Delphi > Technical > Programming > Java
CD-Media   CD-Spy  
portal register members calendar search Today's Posts Mark Forums Read FAQ rules

 
Reply
Thread Tools Rate Thread Display Modes
  #16   Spotlight this post!  
Unread 18-02-2012, 18:16
jesusrambo jesusrambo is offline
Self-Proclaimed Programmer Messiah
AKA: JD Russo
FRC #2035 (Robo Rockin' Bots)
Team Role: Programmer
 
Join Date: Feb 2012
Rookie Year: 2010
Location: Carmel, CA
Posts: 114
jesusrambo is an unknown quantity at this point
Re: Camera Tracking Problems...

Can we see your code?
Reply With Quote
  #17   Spotlight this post!  
Unread 19-02-2012, 17:47
Bennett Bennett is offline
Registered User
FRC #2977 (Sir Lancer Bots)
Team Role: Mentor
 
Join Date: Jan 2012
Rookie Year: 2012
Location: Minnesota
Posts: 26
Bennett is an unknown quantity at this point
Exclamation Re: Camera Tracking Problems...

Code:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package edu.wpi.first.wpilibj.templates.commands;



import edu.wpi.first.wpilibj.Timer;
import edu.wpi.first.wpilibj.camera.AxisCamera;
import edu.wpi.first.wpilibj.camera.AxisCameraException;
import edu.wpi.first.wpilibj.image.*;

public class CameraSeek extends CommandBase {
  
    AxisCamera camera;
    CriteriaCollection cc;    
     
     public CameraSeek() {
        
        // Use requires() here to declare subsystem dependencies
        // eg. requires(chassis);
    }

    // Called just before this Command runs the first time
    protected void initialize() {
        String camip = "10.29.77.11";
        camera = AxisCamera.getInstance(camip);
        cc = new CriteriaCollection();      // create the criteria for the particle filter
        cc.addCriteria(NIVision.MeasurementType.IMAQ_MT_BOUNDING_RECT_WIDTH, 20, 400, false);
        cc.addCriteria(NIVision.MeasurementType.IMAQ_MT_BOUNDING_RECT_HEIGHT, 20, 300, false); 
    try {
                ColorImage picture = camera.getImage();   //should read image from camera and then save it to a jpg file   
                picture.write("runthis.jpg");
                
                ColorImage trypicture = new RGBImage("runthis.jpg");    //workaround that should allow us to process the image
                
                //BinaryImage thresholdImage = trypicture.thresholdRGB(205, 255, 205, 255, 205, 255);   // keep only black objects
                BinaryImage thresholdImage = trypicture.thresholdHSL(126, 255, 6, 255, 201, 255);     //Saturation/Hue/Lumination filter
                BinaryImage bigObjectsImage = thresholdImage.removeSmallObjects(false, 2);  // remove small artifacts
                BinaryImage convexHullImage = bigObjectsImage.convexHull(false);          // fill in occluded rectangles
                BinaryImage filteredImage = convexHullImage.particleFilter(cc);           // find filled in rectangles                
                ParticleAnalysisReport[] reports = filteredImage.getOrderedParticleAnalysisReports();  // get list of results 
                
                //System.out.println("Step 2 Achieved-Threshold set, image filtered");
              
        
               
    for (int i = 0; i < reports.length; ++i) {                               // print results              
                ParticleAnalysisReport r = reports[i];
                System.out.println("Particle: " + i + ":  Center of mass x: " + r.center_mass_x_normalized);                   
                System.out.println("Particle: " + i + ": Center of mass y: " + r.center_mass_y_normalized);
                
                if (r.center_mass_x_normalized < 0.7) {
                  System.out.println("Found it, its to the left");
                  shootrun.Pan(r.center_mass_x_normalized);
                  
                    if (r.center_mass_x_normalized < 0.0) {
                  Timer.delay(-1.0 * r.center_mass_x_normalized); 
                  }
                   else if (r.center_mass_x_normalized > 0.0) {
                   Timer.delay(r.center_mass_x_normalized);     
                   }
                    shootrun.Pan(0);
                }  
                else if (r.center_mass_x_normalized < -0.9) {
                  System.out.println("Found it, its to the right");
                  shootrun.Pan(r.center_mass_x_normalized);
                   if (r.center_mass_x_normalized < 0.0) {
                  Timer.delay(-1.0 * r.center_mass_x_normalized); 
                  }
                   else if (r.center_mass_x_normalized > 0.0) {
                   Timer.delay(r.center_mass_x_normalized);     
                   }
                  shootrun.Pan(0);    
                }
                else 
                  shootrun.Pan(0);  
                  System.out.println("It be trippen, your right on top of it.");
                
    }
           shootrun.Pan(0);
            filteredImage.write("A-5-filteredpic.jpg");
            bigObjectsImage.write("A-3-bigimage.jpg");
            convexHullImage.write("A-4-convex.jpg");
            thresholdImage.write("A-2-threshold.jpg");
            picture.write("A-1-Fresh.jpg");
            trypicture.write("A-6-riu.jpg");
            //thresholdImagebw.write("A-7-Secondarythreshold");
            
                System.out.println(filteredImage.getNumberParticles() + "  " + Timer.getFPGATimestamp()); 
                filteredImage.free();
                convexHullImage.free();
                bigObjectsImage.free();
                thresholdImage.free();
                picture.free();
                trypicture.free();
                //thresholdImagebw.free();
                
                //System.out.println("Step 3 Achieved-Images Freed");   
                  
            } catch (AxisCameraException ex) {
            } catch (NIVisionException ex) {

            }
        
       
    }

    // Called repeatedly when this Command is scheduled to run
    protected void execute() {
        
    
    }

    // Make this return true when this Command no longer needs to run execute()
    protected boolean isFinished() {
        return false;
    }

    // Called once after isFinished returns true
    protected void end() {
    }

    // Called when another command which requires one or more of the same
    // subsystems is scheduled to run
    protected void interrupted() {
    }
}
Reply With Quote
  #18   Spotlight this post!  
Unread 20-02-2012, 12:19
Bennett Bennett is offline
Registered User
FRC #2977 (Sir Lancer Bots)
Team Role: Mentor
 
Join Date: Jan 2012
Rookie Year: 2012
Location: Minnesota
Posts: 26
Bennett is an unknown quantity at this point
Exclamation Re: Camera Tracking Problems...

Desperation bump
Reply With Quote
Reply


Thread Tools
Display Modes Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump


All times are GMT -5. The time now is 12:49.

The Chief Delphi Forums are sponsored by Innovation First International, Inc.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi