Я работаю с OpenCV 3.0 для Android. У меня есть изображение, в котором я хочу обнаружить угол рук внутри круглых дисков. для этого я работаю над HoughLinesP
, чтобы обнаружить руки. Вот код.HoughLinesP не обнаруживает строки OpenCV android
Mat imgSource = new Mat(), imgCirclesOut = new Mat(),imgLinesOut=new Mat();
//grey opencv
Imgproc.cvtColor(Image, imgSource, Imgproc.COLOR_BGR2GRAY);
Imgproc.GaussianBlur(imgSource, imgSource, new Size(9, 9), 2, 2);
int threshold = 0;
int minLineSize = 0;
int lineGap = 0;
Imgproc.HoughLinesP(imgSource, imgLinesOut, 1, Math.PI/180, threshold, minLineSize, lineGap);
for(int j = 0; i < imgLinesOut.cols(); i++)
{
double[] vec=imgLinesOut.get(0,j);
Point pt1, pt2;
pt1=new Point(vec[0],vec[1]);
pt2=new Point(vec[2],vec[3]);
Imgproc.line(Image, pt1, pt2, new Scalar(0,0,255), 3, Core.LINE_AA,0);
}
Что мне нужно, это угол руки в этих кругах. Любая помощь по этому вопросу высоко ценится. Заранее спасибо
Edit Я обновил свой код с этим
Mat imgSource = new Mat(), imgCirclesOut = new Mat(),imgLinesOut=new Mat();
Imgproc.GaussianBlur(Image, imgSource, new Size(5, 5), 2, 2);
int threshold = 20;
int minLineSize = 0;
int lineGap = 10;
Imgproc.Canny(imgSource, imgSource, 70, 100);
Imgproc.HoughLinesP(imgSource, imgLinesOut, 1, Math.PI/180, threshold, minLineSize, lineGap);
for(int j = 0; j < imgLinesOut.cols(); j++)
{
double[] vec=imgLinesOut.get(0,j);
Point pt1, pt2;
pt1=new Point(vec[0],vec[1]);
pt2=new Point(vec[2],vec[3]);
Imgproc.line(imgSource, pt1, pt2, new Scalar(0,0,255), 3, Core.LINE_AA,0);
}
как предложено @Micka, нет необходимости проседи изображения (я удалил cvtcolor
). Я также уменьшил значение GuassianBlur
Размер до 5
. Я добавил Canny на изображение тоже для краев.
В результате размытия изображения
вы попробовать 'Math.PI/1800'? – Micka
@ Micka 'math.PI/1800' сдвинутая линия от последнего круга до второго ... –
Ваша проблема, вероятно, в этой строке:' for (int j = 0; i
Micka