前言
今天主要看了opencv3.4.1的Mat::create函數(shù)源碼艇搀,因?yàn)檫@是最基礎(chǔ)的臀蛛,所有圖像處理函數(shù)都要用到create和Mat類(lèi)亲桦。
Mat類(lèi)主要結(jié)構(gòu)
Mat類(lèi)之前了解過(guò),最重要的信息如下截圖浊仆。size是行數(shù),step是列數(shù)*數(shù)據(jù)類(lèi)型字節(jié)烙肺。
mat結(jié)構(gòu)體.png
Mat::create主要處理函數(shù)
- setSize(*this, d, _sizes, 0, true);
此函數(shù)作用:設(shè)置對(duì)象的size相關(guān)參數(shù),包括行和列氧卧,數(shù)據(jù)類(lèi)型及像素占用字節(jié)桃笙。 - u = a->allocate(dims, size, _type, 0, step.p, 0, USAGE_DEFAULT);
此函數(shù)作用:在RAM中為其分配空間。并且將數(shù)據(jù)指針綁定到Mat類(lèi)對(duì)象中沙绝。allocate中有一 個(gè)alignPtr函數(shù)搏明,主要是將指針對(duì)齊,使指針地址能夠被16整除闪檬。 - finalizeHdr(*this);
此函數(shù)的作用是為Mat類(lèi)對(duì)象綁定寫(xiě)尾指針及限制地址指針等星著。
總結(jié)
Mat::create的步驟就是先確認(rèn)size然后分配空間最后綁定地址到Mat類(lèi)對(duì)象。