|
|
|
![]() |
|
|||||||
|
||||||||
![]() |
|
|
Thread Tools | Rate Thread | Display Modes |
|
|
|
#1
|
||||
|
||||
|
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);
}
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) |
|
#2
|
||||
|
||||
|
Re: Problems with Morphology
Is there any particular reason you're using NIVision instead of OpenCV?
Last edited by Ozuru : 26-02-2016 at 14:06. |
|
#3
|
||||
|
||||
|
Re: Problems with Morphology
Quote:
Also, to load the library: Code:
static {
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
}
|
|
#4
|
||||
|
||||
|
Re: Problems with Morphology
Quote:
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 ![]() |
|
#5
|
||||
|
||||
|
Re: Problems with Morphology
Quote:
|
|
#6
|
||||
|
||||
|
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) 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() {}
}
|
|
#7
|
|||
|
|||
|
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.
|
|
#8
|
||||
|
||||
|
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!!!! |
|
#9
|
||||
|
||||
|
Re: Problems with Morphology
Quote:
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. |
|
#10
|
||||
|
||||
|
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)
|
![]() |
| Thread Tools | |
| Display Modes | Rate This Thread |
|
|