【发布时间】:2019-05-02 21:44:03
【问题描述】:
我在 iOS 上使用 OpenCV。
当我在.mm 文件中运行下面的grabCut 函数并提供:
我希望看到 inclStrokesDebug 和 exclStrokesDebug 分别有一个白色的“I”和“E”,但现在我看到了
但是exclStrokesDebug 的“IE”(不正确,只希望看到 E)
cv::Mat cvt2Mask (UIImage * img) {
cv::Mat mask ;
if (img == nil){
return mask;
}
UIImageToMat(img, mask);
cv::cvtColor(mask, mask, CV_RGBA2GRAY);
cv::threshold(mask, mask, 1, 255, cv::THRESH_BINARY);
return mask;
}
+(UIImage *)grabCut:(UIImage *)srcImg withMask:(UIImage *)maskImg andInclusiveStrokes:(UIImage *)inclStrokesImg andExclusiveStrokes:(UIImage *)exclStrokesImg {
// Returns an inclusive mask image
cv::Mat src;
UIImageToMat(srcImg, src);
cv::Mat mask = cvt2Mask(maskImg);
cv::Mat inclStrokes = cvt2Mask(inclStrokesImg);
cv::Mat exclStrokes = cvt2Mask(exclStrokesImg);
#ifdef DEBUG
UIImage * maskDebug = MatToUIImage(mask);
UIImage * inclStrokesDebug = MatToUIImage(inclStrokes);
UIImage * exclStrokesDebug = MatToUIImage(exclStrokes);
#endif
...
return ...;
}
我检查了cvt2mask 函数,UIImageToMat() 出错并返回了与之前结果相结合的结果。
我使用相同的参数再次运行grabCut 函数,inclStrokesDebug 现在将返回“IE”而不是我在第一次调用中看到的“I”。
是不是因为一些内存没有释放的问题?
【问题讨论】:
标签: c++ ios objective-c opencv memory-management