小弟前陣子用OpenCV跟C++幫客戶寫了一個dll,功能很簡單,只是單純把丟進來的影像縮小尺寸然後顯示而已,但是上機測試後卻發現整個程式的記憶體使用量會幾K幾K的加上去,連續跑了幾天後就把記憶體吃光了,如果沒有呼叫這個dll,就不會有這現象。
可是小弟的程式內容很單純
void MyFunction(unsigned char *image, int width, int height)
{
int size = width * height;
Mat old_image(height, width, CV_8U);
Mat new_image(height/2, width/2, CV_8U);
memcpy(old_image.data, image, size);
cv::resize(old_image, new_image, Size(), 0.5, 0.5);
imshow("resized image", new_image);
waitKey(1000);
destroyAllWindows();
old_image.release();
new_image.release();
delete[] image;
}
小弟的OpenCV換用過3.4.11跟4.1.1的版本,都是會有記憶體堆上去的問題,查遍google也沒看到有人有類似的問題,最後小弟是用自己寫的碼去取代 cv::resize 這行來解決。
請問各位有經驗的大神,小弟原來的程式有那裡呼叫錯了嗎? 雖然有想過會不會是OpenCV本身的bug,但是作為這麼多人使用的library,如果是bug的話,也沒道理只有我有這個問題啊