Chief Delphi

Chief Delphi (http://www.chiefdelphi.com/forums/index.php)
-   Java (http://www.chiefdelphi.com/forums/forumdisplay.php?f=184)
-   -   Problems with Morphology (http://www.chiefdelphi.com/forums/showthread.php?t=144794)

jabarabara 02-26-2016 01:53 PM

Problems with Morphology
 
So, in the past week I've been working on computer vision for this year's competition. I was able to create a binary image by thresholding an image for HSV ranges, but when I try to use morphology dilation I get an error

Code:

        NIVision.Image img, bin, morph;
        NIVision.RawData colorTable;
       
        final NIVision.Range HUE_RANGE = new NIVision.Range(213,255);
        final NIVision.Range SAT_RANGE = new NIVision.Range(217,255);
        final NIVision.Range VIS_RANGE = new NIVision.Range(102,204);
       
        public void robotInit() {
                        img = NIVision.imaqCreateImage(NIVision.ImageType.IMAGE_RGB, 0);
                        bin = NIVision.imaqCreateImage(NIVision.ImageType.IMAGE_U8, 0);
                        morph = NIVision.imaqCreateImage(NIVision.ImageType.IMAGE_U8, 0);
                        colorTable = new NIVision.RawData();
        }

        public void operatorControl() {
                        NIVision.imaqReadFile(img, "/home/lvuser/capture.jpg");
                        NIVision.imaqColorThreshold(bin, img, 255, NIVision.ColorMode.HSV, HUE_RANGE, SAT_RANGE, VIS_RANGE);
                        NIVision.imaqWriteJPEGFile(bin, "/home/lvuser/bin.jpg", 2000, colorTable);
                        NIVision.imaqMorphology(morph, bin, NIVision.MorphologyMethod.DILATE, new NIVision.StructuringElement(3,3,1));
                        NIVision.imaqWriteJPEGFile(morph, "/home/lvuser/morph.jpg", 2000, colorTable);
        }

I got this error from the code above:

Code:

VisionException [com.ni.vision.VisionException: imaqError: -1232673104: Unknown error]
        at com.ni.vision.NIVision._imaqMorphology(Native Method)
        at com.ni.vision.NIVision.imaqMorphology(NIVision.java:24502)
        at org.usfirst.frc.team2415.robot.Robot.operatorControl(Robot.java:47)
        at edu.wpi.first.wpilibj.SampleRobot.startCompetition(SampleRobot.java:159)
        at edu.wpi.first.wpilibj.RobotBase.main(RobotBase.java:242)

I've already tried searching for the problem to find a solution and couldn't. I don't see what's wrong. Any ideas?

Ozuru 02-26-2016 02:04 PM

Re: Problems with Morphology
 
Is there any particular reason you're using NIVision instead of OpenCV?

Ozuru 02-26-2016 02:10 PM

Re: Problems with Morphology
 
Quote:

Originally Posted by jabarabara (Post 1547549)
I tried OpenCV at first, but I could never get the code to load the library :(.

I highly recommend using OpenCV over NIVision.

Also, to load the library:

Code:

    static {
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
    }


jabarabara 02-26-2016 02:15 PM

Re: Problems with Morphology
 
Quote:

Originally Posted by Ozuru (Post 1547551)
I highly recommend using OpenCV over NIVision.

Also, to load the library:

Code:

    static {
        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
    }


I'll try and see if I it will load then and get back to you.

P.S.: sorry for deleting my earlier message. I was trying to rewrite it as a reply to your post, not just another post. Still new :P

Ozuru 02-26-2016 02:17 PM

Re: Problems with Morphology
 
Quote:

Originally Posted by jabarabara (Post 1547558)
I'll try and see if I it will load then and get back to you.

P.S.: sorry for deleting my earlier message. I was trying to rewrite it as a reply to your post, not just another post. Still new :P

No problem. I recommend trying to use OpenCV. If you're new to vision tracking, 341's 2012 vision code is required reading: http://www.chiefdelphi.com/media/papers/2676

jabarabara 02-26-2016 07:10 PM

Re: Problems with Morphology
 
Okay, so now I've tried your methon and I get:

Code:

java.lang.UnsatisfiedLinkError: no opencv_java310 in java.library.path
        at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1857)
        at java.lang.Runtime.loadLibrary0(Runtime.java:870)
        at java.lang.System.loadLibrary(System.java:1119)
        at org.usfirst.frc.team2415.robot.Robot.<clinit>(Robot.java:13)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:259)
        at edu.wpi.first.wpilibj.RobotBase.main(RobotBase.java:204)

with this as code (added the try catch after the first time it failed to get error printed neatly):

Code:

import org.opencv.core.Core;
import edu.wpi.first.wpilibj.SampleRobot;

public class Robot extends SampleRobot {
       
        static{
                try{
                        System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
                }catch(UnsatisfiedLinkError e){
                        e.printStackTrace();
                }
        }
       
    public void robotInit() {}
   
    public void autonomous() {}
   
    public void operatorControl() {}
   
    public void test() {}
}

I tried putting the .so file for opencv in the same directory as the FRCUserProgram on the roboRio, and it still returns this error.

Ben Wolsieffer 02-26-2016 07:18 PM

Re: Problems with Morphology
 
Since you know exactly where the opencv library is located, you have the option of calling System.load("/path/to/library"). Also, make sure that the file is named "libopencv_java310.so", or System.loadLibrary() won't be able to find it.

jabarabara 02-26-2016 07:55 PM

Re: Problems with Morphology
 
Okay I figured out the problem.

1) I didn't have all the necessary dependencies in the directory of the opencv_java"version".so

2) Beforehand, I placed the files in a "/usr/local/lib," and it turns out that I don't have the necessary permissions to load the library from there. Moving the library and its dependencies to the directory of FRCUserProgram.jar fixed that.

I now have OpenCV running on the roboRIO, so I can finally continue Vision Processsing. Thanks for all the help everyone!!!!

Ozuru 02-26-2016 10:07 PM

Re: Problems with Morphology
 
Quote:

Originally Posted by jabarabara (Post 1547705)
Okay I figured out the problem.

1) I didn't have all the necessary dependencies in the directory of the opencv_java"version".so

2) Beforehand, I placed the files in a "/usr/local/lib," and it turns out that I don't have the necessary permissions to load the library from there. Moving the library and its dependencies to the directory of FRCUserProgram.jar fixed that.

I now have OpenCV running on the roboRIO, so I can finally continue Vision Processsing. Thanks for all the help everyone!!!!

Great progress!

I suggest you do not do vision processing on your roboRIO itself. The processing will cause stuttering on your robot's end. I highly recommend sending the frame to the driver's station and then doing processing there in a stand-alone application.

euhlmann 02-27-2016 05:35 PM

Re: Problems with Morphology
 
Running vision on the DS laptop will result in huge delay times (obviously). We are running vision on-board in a separate thread and it seems to work fine (main robot loop still runs at 50x/sec)


All times are GMT -5. The time now is 08:01 AM.

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