2014-06-29 84 views
0

我寫了一些代碼,以10%的灰色條添加到圖像的左側和右側,像這樣:爲什麼這個Open CV代碼泄漏?

// 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

任何想法?

+0

圖片的類型是CV_8UC1? – marol

+0

@Robert:你也可以分享警告信息。另外,您可以嘗試使用比當前尺寸更小的圖像。 –

+0

你有沒有在'cv :: Rect()'之前使用'static_cast '嘗試'在'widenedImage'中的列的初始化過程中? – scap3y

回答

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

此外,您的浮點部門可能會創建舍入錯誤。嘗試使用它們在之前將大小值保存爲整數

+0

感謝您的建議,但是仍然產生相同的崩潰:(。copyMakeBorder我喜歡這個: 'int borderSize = image.cols * 0.1;' 'cv :: copyMakeBorder(image,image,0,0, borderSize,borderSize,cv :: BORDER_CONSTANT);' – Robert

+0

請參閱我的更新重新:FP部門。 –