如何使用cvfitlinejava
我有以下代码:如何使用cvfitlinejava,java,opencv,Java,Opencv,我有以下代码: [...]cvCvtColor(subtraction, grayBuffer, CV_BGR2GRAY); cvThreshold(grayBuffer, grayBuffer, 127, 255, CV_THRESH_BINARY); cvFindContours(grayBuffer, mem, contours, Loader.sizeof(CvContour.class) , CV_RETR_LIST, CV_CHAIN_
[...]cvCvtColor(subtraction, grayBuffer, CV_BGR2GRAY);
cvThreshold(grayBuffer, grayBuffer, 127, 255, CV_THRESH_BINARY);
cvFindContours(grayBuffer, mem, contours, Loader.sizeof(CvContour.class) , CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0));
//cvFitLine(Mat(contours[0]),lines,2,0,0.01,0.01);
cvFitLine(contours, CV_DIST_L2, 2, 0.01, 0.01, line);
int lefty = (int)((int)(-line[2]*line[1]/line[0])+line[3]);
int righty = (int) ((int)((grayBuffer.width()-line[2])*line[1]/line[0])+line[3]);
line(grayBuffer.width()-1,0,righty,lefty); [...]´
`
[...]cvCvtColor(subtraction, grayBuffer, CV_BGR2GRAY);
cvThreshold(grayBuffer, grayBuffer, 127, 255, CV_THRESH_BINARY);
cvFindContours(grayBuffer, mem, contours, Loader.sizeof(CvContour.class) , CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0));
//cvFitLine(Mat(contours[0]),lines,2,0,0.01,0.01);
cvFitLine(contours, CV_DIST_L2, 2, 0.01, 0.01, line);
int lefty = (int)((int)(-line[2]*line[1]/line[0])+line[3]);
int righty = (int) ((int)((grayBuffer.width()-line[2])*line[1]/line[0])+line[3]);
line(grayBuffer.width()-1,0,righty,lefty); [...]´
这给了我一个致命的错误
[...]cvCvtColor(subtraction, grayBuffer, CV_BGR2GRAY);
cvThreshold(grayBuffer, grayBuffer, 127, 255, CV_THRESH_BINARY);
cvFindContours(grayBuffer, mem, contours, Loader.sizeof(CvContour.class) , CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0));
//cvFitLine(Mat(contours[0]),lines,2,0,0.01,0.01);
cvFitLine(contours, CV_DIST_L2, 2, 0.01, 0.01, line);
int lefty = (int)((int)(-line[2]*line[1]/line[0])+line[3]);
int righty = (int) ((int)((grayBuffer.width()-line[2])*line[1]/line[0])+line[3]);
line(grayBuffer.width()-1,0,righty,lefty); [...]´
有人知道如何使用fitLine吗
[...]cvCvtColor(subtraction, grayBuffer, CV_BGR2GRAY);
cvThreshold(grayBuffer, grayBuffer, 127, 255, CV_THRESH_BINARY);
cvFindContours(grayBuffer, mem, contours, Loader.sizeof(CvContour.class) , CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0));
//cvFitLine(Mat(contours[0]),lines,2,0,0.01,0.01);
cvFitLine(contours, CV_DIST_L2, 2, 0.01, 0.01, line);
int lefty = (int)((int)(-line[2]*line[1]/line[0])+line[3]);
int righty = (int) ((int)((grayBuffer.width()-line[2])*line[1]/line[0])+line[3]);
line(grayBuffer.width()-1,0,righty,lefty); [...]´
谢谢:)这是一个使用cvFitLine(为处理语言编写,提供setup()和exit()方法)的javacv程序:
[...]cvCvtColor(subtraction, grayBuffer, CV_BGR2GRAY);
cvThreshold(grayBuffer, grayBuffer, 127, 255, CV_THRESH_BINARY);
cvFindContours(grayBuffer, mem, contours, Loader.sizeof(CvContour.class) , CV_RETR_LIST, CV_CHAIN_APPROX_SIMPLE, cvPoint(0,0));
//cvFitLine(Mat(contours[0]),lines,2,0,0.01,0.01);
cvFitLine(contours, CV_DIST_L2, 2, 0.01, 0.01, line);
int lefty = (int)((int)(-line[2]*line[1]/line[0])+line[3]);
int righty = (int) ((int)((grayBuffer.width()-line[2])*line[1]/line[0])+line[3]);
line(grayBuffer.width()-1,0,righty,lefty); [...]´
谢谢,但我还是有同样的问题。我在cvFitLine之前使用了cvFindContours,在最后一个函数中出现了以下错误:“#Java运行时环境检测到一个致命错误:#异常#访问(0xc0000005)在pc=0x00007FCA032F84D,pid=10268,tid=3640#JRE版本:7.0#U 13-b20#Java虚拟机:Java热点(TM)64位服务器虚拟机(23.7-b01混合模式windows-amd64压缩oops)#有问题的框架:#C[opencv_imgproc231.dll+0xdf84d]cvFitLine+0x40d###无法写入核心转储。默认情况下,在windows的客户端版本上不启用小型转储`