2016-11-04 1 views
0

これは、APIが経時的に変更されたようです。JavaCVでHoughLinesPを動作させる現代的な方法

私は限り

import org.bytedeco.javacpp.opencv_core.{Mat, Point, Scalar} 
import org.bytedeco.javacpp.{opencv_core, opencv_imgcodecs, opencv_imgproc} 

val mat   = opencv_imgcodecs.imread("test-in.jpg") 
val greyMat  = new Mat() 
val lines  = new Mat() 
opencv_imgproc.cvtColor(mat, greyMat, opencv_imgproc.CV_BGR2GRAY, 1) 
val rho   = 1.0 
val theta  = 1.0.toRadians 
val thresh  = 50 
val minLineLen = 80 
val maxLineGap = 50 

opencv_imgproc.HoughLinesP(greyMat, lines, rho, theta, thresh, 
    minLineLen, maxLineGap) 

for (i <- 0 until lines.rows()) { 
    val pt1 = ??? : Point 
    val pt2 = ??? : Point 
    val colr = new Scalar(0, 0, 255, 128) 

    opencv_imgproc.line(mat, pt1, pt2, colr, 1, opencv_core.LINE_AA, 0) 
} 

opencv_imgcodecs.imwrite("test-out.jpg", mat) 

として取得するしかし、私はlinesマトリックスから点を抽出する方法がわかりません。 たとえば、this old postは、私が見つけられないMatOfInt4というようなことを示唆しています。また、Matlines.get(0, x)、存在しないメソッドを実行できるとの回答があります。

は、その後、私はUByteRawIndexer使用another variantを見つけることが、私のマトリックス中の細胞は、(私はHoughLinesPなくHoughLinesを呼び出すので、これはおそらくです)の代わりに四つの要素のうち3つを持っています。

HoughLinesPコールからポイントを取得するにはどうすればよいですか? JavaCVは1.2、OpenCVは3.1です。


私はそのサイズのためlines行列を照会した場合、私はrows = 19167, cols = 1を取得します。私はUByteRawIndexerのように見えるIndexerを作成します、私はsizes = [1958, 2196, 3]を得ます。これのどれも私には意味がありません。 linesdepth = 5type = 13です。

答えて

0

誤った行列(入力画像はlinesではなく入力画像)からインデクサーを作成したようです。そのため、サイズが大きく、タイプがunsigned-byteでした。 linesマトリックスからインデクサ作成

は行数、一つの列、及び第三の次元に対応する行とIntRawIndexerを与えるX1、Y1、X2、Y2与え、サイズ4のものである:

val indexer: IntRawIndexer = lines.createIndexer() 

    for (i <- 0 until indexer.rows().toInt /* lines.rows() */) { 
    val x1 = indexer.get(i, 0, 0) 
    val y1 = indexer.get(i, 0, 1) 
    val x2 = indexer.get(i, 0, 2) 
    val y2 = indexer.get(i, 0, 3) 

    println(s"x1 = $x1, y1 = $y1, x2 = $x2, y2 = $y2") 

    val pt1 = new Point(x1, y1) 
    val pt2 = new Point(x2, y2) 
    val colr = new Scalar(0, 0, 255, 128) 

    opencv_imgproc.line(mat, pt1, pt2, colr, 1, opencv_core.LINE_AA, 0) 
    } 
関連する問題