首页 > 解决方案 > 如何使用带有 Android Studio(kotlin) 的 OpenCV4 删除未解决的参考错误

问题描述

我正在尝试将 java 代码转换为 kotlin。原始 java 代码显示在该页面中(编辑:@OpenCV4Android) android java opencv 2.4 凸包凸缺陷

private fun getConvexHull(contours:ArrayList<MatOfPoint>) {

 var hullInt = MatOfInt()
 var hullPointList : List<org.opencv.core.Point>? = null
 var hullPointMat : MatOfPoint? = null
 var hullPoints = ArrayList<MatOfPoint>()
 var Image: Bitmap = textureView.getBitmap()
 var mROI = Mat()

 for(k in 0..contours.size-1){
     Imgproc.convexHull(contours.get(k), hullInt)
     for(j in 0..hullInt.toList().size-1 ){

         hullPointList.add(  ////// this line
             contours.get(k).toList().get(
                 hullInt.toList().get(j)))

     }
     hullPointMat?.fromList(hullPointList)
     hullPoints.add(hullPointMat!!)
 }

 Utils.bitmapToMat(Image,mROI)
 Imgproc.drawContours( 
     mROI,hullPoints,-1,Scalar(255.0,0.0,0.0,255.0),1)

}

在这段代码中,“hullPointList.add”行中出现了“unresolved reference:add”错误。您有任何解决方案来消除此错误吗?谢谢。

标签: javaopencv

解决方案


我自己解决了这个问题。

private fun getConvexHull(contours:ArrayList<MatOfPoint>):ArrayList<MatOfPoint>
{
    val hullInt:MatOfInt = MatOfInt()
    val hullPointList = mutableListOf<org.opencv.core.Point>() // changed
    val hullPointMat = MatOfPoint()  // changed
    val hullPoints = ArrayList<MatOfPoint>()
    var Image: Bitmap = textureView.getBitmap()
    var mROI = Mat()

    for(eachCont in contours){
        Imgproc.convexHull(eachCont, hullInt)
        for (eachHull in hullInt.toList())
            hullPointList.add(eachCont.toList().get(eachHull))
        hullPointMat.fromList(hullPointList)
        hullPoints.add(hullPointMat)
    }
    Utils.bitmapToMat(Image,mROI)
    Imgproc.drawContours(mROI,hullPoints,-1,Scalar(255.0,0.0,0.0,255.0),1)
}

推荐阅读