mat相关函数

初次接触,留作参考


读取图像

img = imread(pFileName, CV_LOAD_IMAGE_GRAYSCALE);


判断图像是否为空,用于判断图像是否读取成功

img.empty()

显示图像

imshow("input: ",img);


复制图像

image1 = image.clone() ;//完全拷贝,把image中的所有信息拷贝到image1中  
image1 = image.copyto(); // 和clone差不多
image1 = image;         // 只复制了图像的头部信息,数据部分是共享的


释放内存

mat.release() 

这个貌似需要手动调用才行,否则有些情况下内存不会释放

比如我在下面的函数中调用了一个imread读取了一个图片,如果我不在读取之前释放内存,似乎这片内存就泄漏了。


void cvMISCDFT::loadPicture(const char * fileName)
{
    char * pFileName = (char *)fileName;
    if(!pFileName)
    {
        pFileName =(char *)DEFAULT_PICTURE;
    }
 
    //m_img.release();
    //m_mag.release();
 
    m_img = imread(pFileName, CV_LOAD_IMAGE_GRAYSCALE);
    if(m_img.empty())
    {
        return;
    }

在外面,调用while(1)

{

dft.loadPicture();

}

在top中,可以看到进程占用的内存越来越多。

如果在在imread之前调用了release,则占用的内存不会增加。具体在什么时候需要release还需要研究。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值