Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用OpenCV Java检测搁板,_Java_Opencv_Image Processing - Fatal编程技术网

使用OpenCV Java检测搁板,

使用OpenCV Java检测搁板,,java,opencv,image-processing,Java,Opencv,Image Processing,我正在进行货架检测,在过去一周中,仍然有四个角点未检测到, 这是我的密码,敬请指教 public void principalArea(字符串输入路径){ 设置路径(输入路径); Mat Mat=Imgcodecs.imread(路径); Mat Mat_f=新的Mat(Mat.size(),CvType.CV_8UC3); Mat Mat_o=新的Mat(Mat.size(),CvType.CV_8UC3); Mat Mat_n=新的Mat(Mat.size(),CvType.CV_8UC3

我正在进行货架检测,在过去一周中,仍然有四个角点未检测到, 这是我的密码,敬请指教

public void principalArea(字符串输入路径){
设置路径(输入路径);
Mat Mat=Imgcodecs.imread(路径);
Mat Mat_f=新的Mat(Mat.size(),CvType.CV_8UC3);
Mat Mat_o=新的Mat(Mat.size(),CvType.CV_8UC3);
Mat Mat_n=新的Mat(Mat.size(),CvType.CV_8UC3);
//Mat morphingMatrix=Mat.One(3,3,CvType.CV_8UC1);
Mat morphingMatrix=Imgproc.getStructuringElement(Imgproc.morp_椭圆,新尺寸(3,3));
GaussianBlur(mat,mat_f,新尺寸(9,9),0);
System.out.println(“MAT_F DETAILS GaussianBlur”+MAT_F.size()+,“+MAT_F.channels());
Imgproc.cvt颜色(mat\u f、mat\u f、Imgproc.COLOR\u RGB2GRAY);
GaussianBlur(mat_f,mat_f,新尺寸(15,15),15);
Imgproc.adaptiveThreshold(mat_f,mat_f,255,Imgproc.ADAPTIVE_THRESH_MEAN_C,Imgproc.THRESH_BINARY_INV,11,2);
Imgproc.morphologyEx(mat_f,mat_f,Imgproc.morp_OPEN,morphingMatrix);
Imgproc.Canny(mat_f,mat_f,100400,5,true);
mat_o=gethoughttransform(mat_f,mat,1,Math.PI/360,80);
System.out.println(“MAT_F DETAILS hough”+MAT_o.size()+,“+MAT_o.channels());
Imgcodecs.imwrite(“Output_0055.jpg”,mat_o);
}
公共Mat gethoughttransform(Mat image、Mat-Mat、双rho、双θ、int threshold){
Mat结果=新Mat(image.size(),CvType.CV_8UC1);
垫线=新垫();
int minLineSize=50,lineGap=90,noofline=1;
双最大距离=0.0,电流距离=0.0,平均距离=0.0;
double maxX1=0,maxY1=0,minX1=image.width(),minY1=image.height(),
maxX2=0,maxY2=0,minX2=image.width(),minY2=image.height(),
avgX1=0,avgY1=0,avgX2,avgY2=0;
HoughLinesP(图像、线、ρ、θ、阈值、最小线尺寸、线间距);
对于(int x=0;x角度|角度>10.00)///基于斜率的过滤线
{System.out.println(“旁路”+x1+“,“+y1+”,“+x2+”,“+y2+”天使是”+angle);
继续;
}
if(x1<0.02*image.width()| x2>(image.width()*(1-0.01))//基于位置过滤行
{System.out.println(“绕过边“+x1+”、“+y1+”、“+x2+”、“+y2+”角度处的线为“+ANGEL”);
继续;
}
Currdistance=欧几里德距离(p1,p2);
if(currdestanceMaxdistance){Maxdistance=Currdistance;}
Imgproc.line(结果,p1,p2,新标量(255255),3);
Avgdistance=(noofline*Avgdistance+Currdistance)/(++noofline);

maxX1=(x1>maxX1)?x1:maxX1;minX1=(x1maxY1)?y1:maxY1;minY1=(y1maxX2)?x2:maxX2;minX2=(x2maxY2)?y2:maxY2;minY2=(未检测到角点,但它是否输出任何内容?是否有任何中间结果?请尝试添加日志语句并跟踪一些进度。显示代码的输出图像可以帮助我们了解发生了什么。请使用输出图像编辑您的问题。好的,我正在上载。)