0

I'm trying to convert java code into kotlin. Original java code is shown in that page(Edit: @OpenCV4Android) android java opencv 2.4 convexhull convexdefect

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)

}

In this code, "unresolved reference:add" error has been occured in "hullPointList.add" line. Do you have any solutions to remove this error? Thanks.

Haroon nasir
  • 648
  • 1
  • 7
  • 21

1 Answers1

0

I worked out the problem by myself.

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)
}