我试图在视频帧上绘制 10 * 10 矩阵,这是绘图功能:
void AddMatrixToVideo::process(cv::Mat &videoFrameInput)
{
int MatrixStartPointX = 0;
int MatrixStartPointY = 0;
int m,n;
for(int i = 0; i < matrixNumInRow; ++i) {
for(int j = 0; j < matrixNumInColm; ++j) {
//draw horizontal line
for(m = MatrixStartPointX; m < MatrixStartPointX + matrixWidth; ++m) {
processGrayFrame(m,MatrixStartPointY,videoFrameInput);
processGrayFrame(m,MatrixStartPointY + matrixHeight,videoFrameInput);
}
//draw vertical line
for(n = MatrixStartPointY; n < MatrixStartPointY + matrixHeight; ++n) {
// processGrayFrame(MatrixStartPointX,n,videoFrameInput);
// processGrayFrame(MatrixStartPointX + matrixWidth,n,videoFrameInput);
}
MatrixStartPointX += matrixWidth;
}
MatrixStartPointX = 0;
MatrixStartPointY += matrixHeight;
}
}
这是 processGrayFrame():
void AddMatrixToVideo::processGrayFrame(int x,int y,cv::Mat &videoFrameInput)
{
videoFrameInput.at<uchar>(y,x) = 255;
}
运行程序后,似乎绘图进度正常,内存使用量不断增加,最终耗尽内存。如果我评论 processGrameFrame() 函数,内存问题就会出现(当然它不会再画线了)。所以我的问题是为什么分配操作会导致内存泄漏问题?