View Single Post
  #1   Spotlight this post!  
Unread 25-01-2017, 10:43
GRSICP GRSICP is offline
Greta Rauch
FRC #5822 (WolfByte)
Team Role: Programmer
 
Join Date: Oct 2015
Rookie Year: 2010
Location: Chicago
Posts: 26
GRSICP is an unknown quantity at this point
GRIP and Java Code Not Agreeing

I'm new to vision processing and I've run into a problem. I currently have my Java code set up to process the reflective tape from the gear pegs using OpenCV. When I run this code, often only one of the two vision targets is identified. I saved the images that were failing and then fed them through GRIP. GRIP consistently finds both targets.

Here is a picture of my GRIP program with one of the failed images: http://imgur.com/iGsEQeK

Here is the processing part of the code I am running in Java:
Code:
Imgproc.cvtColor(bgr, hsvConvert, Imgproc.COLOR_BGR2HSV); 
			Core.inRange(hsvConvert, new Scalar (0, 0, 0), new Scalar (180, 255, 64), hsv); //those two Scalar values are the the max and min HSV values respectively. Those were determined in GRIP. 
			Imgproc.findContours(hsv, contours, mhierarchy, Imgproc.RETR_LIST, Imgproc.CHAIN_APPROX_SIMPLE); //first enum lets you control things about hierarchy, I chose option with no hierarchy 
			Imgproc.drawContours(bgr, contours,0,new Scalar (0,255,0),1); 
			int idex=0; 
			int size = contours.size();
			
			for (idex=0; idex < contours.size(); idex++)
			{
				test = contours.get(idex); 
				nums = findCenterXYDistance(test.toList());
				System.out.println("MaxX: " +nums[0]+ "; Width: " + nums[1] + "; MaxY: " + nums[2] + "; Height: " + nums[3]); 
				targetRatio = nums[3]/nums[1];
				System.out.println("Ratio: " + targetRatio + "; Area: " + Imgproc.contourArea(test)); 
				
				if (Imgproc.contourArea(test)>100)
				{
					finalContours.add(test); 
				}
				idex++; 
			}
As far as I can tell, GRIP and my code should produce the same results. Any ideas on why my output would be different?
Reply With Quote