为什么这个Open CV代码泄露了?

时间:2014-06-29 13:37:11

标签: c++ ios opencv

我写了一些代码,在图像的左侧和右侧添加10%的灰色条,如下所示:

// Create image 20% wider
cv::Mat widenedImage(image.rows,
                     image.cols * 1.2,
                     CV_8UC1, 
                     127); // Grey colour

// Make a region of interest in the middle of the new image
cv::Mat toROI(widenedImage, cv::Rect((widenedImage.cols - image.cols) / 2.0,
                                     0,
                                     image.cols,
                                     image.rows));

// Copy the image to the region of interest 
image.copyTo(toROI);

如果没有代码,直接使用image,应用运行正常。添加后,XCode的内存图不会增长,但我会收到几条警告,然后是此消息。

enter image description here

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

我通常会这样创建toROI

cv::Mat toROI(widenedImage(cv::Rect((widenedImage.cols - image.cols) / 2.0,
                                 0,
                                 image.cols,
                                 image.rows)));

或者,如果您以后不需要toROI,我会建议这样的事情:

image.copyTo(widenedImage( cv::Rect((widenedImage.cols - image.cols) / 2.0,
                                 0,
                                 image.cols,
                                 image.rows)));

或者可以考虑使用copyMakeBorder()

此外,您的浮点分区可能会产生舍入错误。尝试在之前将大小值保存为整数