Panic when GC
Closed this issue · 0 comments
garfeng commented
func ResourceTrackerExamplePanic() {
rt := gocv_resource_tracker.NewTracker()
// defer rt.Close()
mat := rt.IMRead("test.png", gocv.IMReadGrayScale)
kernel := rt.GetStructuringElement(gocv.MorphEllipse, image.Pt(5, 5))
erode := rt.NewMat()
gocv.Erode(mat, &erode, kernel)
thres := rt.NewMat()
gocv.Threshold(erode, &thres, 0, 255, gocv.ThresholdOtsu)
contours := rt.FindContours(thres, gocv.RetrievalList, gocv.ChainApproxNone)
runtime.GC() // =============> Will cause panic. Because rt is deleted, and contours is Closed
contoursNum := contours.Size()
for i := 0; i < contoursNum; i++ {
c := contours.At(i)
area := gocv.ContourArea(c)
if area > 10 {
// do something
}
}
}