2015-04-08 21 views
5

Opencv Java documentation of Hough Transform'a bakıyordum. hatlarınınJava'da OpenCV Mat'da iki elementli vektör nasıl temsil edilir?

Çıkış vektörü:

dönüş değeri lines olarak tarif edilen bir Mat veri türü bulunmaktadır. Her bir çizgi, iki elemanlı bir vektörü (rho, teta) ile temsil edilir. rho, koordinat kaynağı (0,0) (görüntünün sol üst köşesi) mesafedir. theta, radyan cinsinden hat dönüş açısıdır (0 ~ dikey çizgi, pi/2 ~ yatay çizgi). this tutorial açıklandığı gibi C++ bir std::vector<cv::Vec2f> lines kullanabilirsiniz:

İlginçtir ki, bu açıklama the C++ interface's description, ama veri değil yazın eşleşir. C++ 'da, verilen veri temsili, açıklandığı gibi, basittir, ancak Java değil.

Peki, Java'da, iki öğe vektörü geri gönderilen Mat'da nasıl temsil ediliyor/depolanıyor?

cevap

5

Bir süre önce kullandığım bazı kodlar, 2.4.8 sürümünde. matLines bu geldi:

Imgproc.HoughLinesP(matOutline, matLines, 1, Math.PI/180, houghThreshCurrent, houghMinLength, houghMaxGap); 

...

Point[] points = new Point[]{ new Point(), new Point() }; 
for (int x = 0; x < matLines.cols(); x++) { 
    double[] vec = matLines.get(0, x); 
    points[0].x = vec[0]; 
    points[0].y = vec[1]; 
    points[1].x = vec[2]; 
    points[1].y = vec[3]; 
    //... 
} 
+0

Teşekkür! Ben aslında ihtiyacım olan kişi değilim, [bu sorunun] yazarı nı görelim (http://stackoverflow.com/questions/29493267/how-to-detect-lines-using-houghlines-in-opencv-java) diyor ki ... – Antonio

+0

Döngüde gereksiz bellek ayırmasını önlemek için döngüyü yeniden yazma özgürlüğünü aldım; büyük resimler için, bu gerçek bir kaynak domuz olabilir. – vaxquis

İlgili konular