首页 > 试题

create

更新时间:2023-01-20 13:40:30 阅读: 评论:0

西安中考全日制补课机构-捆缚


2023年1月20日发(作者:各大高校校花)

【Opencv源码剖析】⼀、create函数

1.

inlineMat::Mat(int_rows,int_cols,int_type):size(&rows)

{

initEmpty();//将data、cols、rows等初始化为0

create(_rows,_cols,_type);

}

2.

inlineMat::Mat(int_rows,int_cols,int_type,constScalar&_s):size(&rows)

{

initEmpty();

create(_rows,_cols,_type);

*this=_s;//给矩阵像素赋值为_s

}

3.

inlinevoidMat::create(int_rows,int_cols,int_type)

{

_type&=TYPE_MASK;

if(dims<=2&&rows==_rows&&cols==_cols&&type()==_type&&data)//如果colsrowsdata已经存在,则返回,什么都不⽤做

return;

intsz[]={_rows,_cols};

create(2,sz,_type);

}

4.

voidMat::create(intd,constint*_sizes,int_type)

{

inti;

CV_Asrt(0<=d&&_sizes&&d<=CV_MAX_DIM&&_sizes);

_type=CV_MAT_TYPE(_type);

if(data&&(d==dims||(d==1&&dims<=2))&&_type==type())

{

if(d==2&&rows==_sizes[0]&&cols==_sizes[1])

return;

for(i=0;i

if(size[i]!=_sizes[i])

break;

if(i==d&&(d>1||size[1]==1))

return;

}

relea();

if(d==0)

return;

flags=(_type&CV_MAT_TYPE_MASK)|MAGIC_VAL;

tSize(*this,d,_sizes,0,true);

if(total()>0)

{

#ifdefHAVE_TGPU

if(!allocator||allocator==tegra::getAllocator())allocator=tegra::getAllocator(d,_sizes,_type);

#endif

if(!allocator)//如果没有分配内存,则去分配,否则则⽤allocate把指针指向data就⾏了,不⽤重复分配

{

size_ttotalsize=alignSize(step.p[0]*size.p[0],(int)sizeof(*refcount));

data=datastart=(uchar*)fastMalloc(totalsize+(int)sizeof(*refcount));

refcount=(int*)(data+totalsize);

*refcount=1;//引⽤计数

}

el

{

#ifdefHAVE_TGPU

try

{

allocator->allocate(dims,size,_type,refcount,datastart,data,step.p);

CV_Asrt(step[dims-1]==(size_t)CV_ELEM_SIZE(flags));

}catch(...)

{

allocator=0;

size_ttotalSize=alignSize(step.p[0]*size.p[0],(int)sizeof(*refcount));

data=datastart=(uchar*)fastMalloc(totalSize+(int)sizeof(*refcount));

refcount=(int*)(data+totalSize);

*refcount=1;

}

#el

allocator->allocate(dims,size,_type,refcount,datastart,data,step.p);

CV_Asrt(step[dims-1]==(size_t)CV_ELEM_SIZE(flags));

#endif

}

}

finalizeHdr(*this);

}

Mat的拷贝构造函数

inlineMat::Mat(constMat&m)

:flags(),dims(),rows(),cols(),data(),

refcount(nt),datastart(art),dataend(d),

datalimit(mit),allocator(tor),size(&rows)

{

if(refcount)

CV_XADD(refcount,1);

if(<=2)

{

step[0]=[0];step[1]=[1];

}

el

{

dims=0;

copySize(m);

}

}

本文发布于:2023-01-20 13:40:30,感谢您对本站的认可!

本文链接:http://www.wtabcd.cn/fanwen/fan/88/101526.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

上一篇:歌唱祖国
下一篇:归园田居
标签:create
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图