xxxx18一60岁hd中国/日韩女同互慰一区二区/西西人体扒开双腿无遮挡/日韩欧美黄色一级片 - 色护士精品影院www

  • 大小: 8KB
    文件類(lèi)型: .cpp
    金幣: 1
    下載: 0 次
    發(fā)布日期: 2021-06-15
  • 語(yǔ)言: C/C++
  • 標(biāo)簽: 八連通區(qū)??

資源簡(jiǎn)介

有main函數(shù)的C++源碼,直接可運(yùn)行,自己寫(xiě)的二值圖像八連通區(qū)域,對(duì)應(yīng)matlab中的bwlabel

資源截圖

代碼片段和文件信息

#include?
#include??
#include?
#include?
#include?
#include?
#include?
#include???
#include??
typedef?unsigned?char?uchar;
using?namespace?std;






///?圖算法相關(guān)
typedef?struct?EDGE{
int?start?end;
EDGE()
{
start?=?0;
end?=?0;
}
EDGE(int?a?int?b)
{
start?=?a;
end?=?b;
}
}edge;
typedef?struct?GraphicNode{
int?vertex;?//頂點(diǎn)數(shù)據(jù)信息
GraphicNode?*nextNode;
}graphNode;


//?依據(jù)圖連通域分量合并錯(cuò)分的runs,并重新賦值,返回實(shí)際的連通域個(gè)數(shù)
int?RunlabelDeleteError(int?*runlabel?int?*outlabel?int?numRuns?vector?>?sameLabel)
{
for?(int?i?=?0;?i? {

if?(sameLabel[i].size()? {
continue;
}
for?(int?j?=?0;?j? {
for?(int?k?=?0;?k? {
if?(runlabel[k]?==?sameLabel[i][j])
{
runlabel[k]?=?sameLabel[i][0];
}
}
}
}
//?label?去重,排序
vector?temp;
temp.push_back(runlabel[0]);
for?(int?i?=?1;?i? {
bool?flag?=?false;
for?(int?j?=?0;?j? {
flag?|=?runlabel[i]?==?temp[j];
}
if?(!flag)
{
temp.push_back(runlabel[i]);
}
}
int?*data?=?new?int[temp.size()];
int?*index?=?new?int[temp.size()];
for?(int?i?=?0;?i? {
data[i]?=?temp[i];
index[i]?=?i;
}
for?(int?i?=?0;?i? {
for?(int?j?=?i?+?1;?j? {
if?(data[i]?>?data[j])
{
int?temp?=data[i];
data[i]?=?data[j];
data[j]?=?temp;
temp?=?index[i];
index[i]?=?index[j];
index[j]?=?temp;
}
}
}
for?(int?i?=?0;?i? {
int?index?=?0;?
for?(int?j?=?0;?j? {
if?(runlabel[i]?==?data[j])
{
index?=?j;
break;
}
}
outlabel[i]?=?index?+?1;
}

delete[]?data;
delete[]?index;

return?temp.size();
}



void?CreateGpaphic(vector?pt?GraphicNode?*G)
{
for?(int?i?=?0;?i? {
int?start?=?pt[i].start;
int?end?=?pt[i].end;
//?create?a?new?node
GraphicNode?*node?*ptr;
node?=?new?GraphicNode();
node->vertex?=?end;
node->nextNode?=?NULL;

ptr?=?&(G[start]);
while?(ptr->nextNode?!=?NULL)
{
ptr?=?ptr->nextNode;
}
ptr->nextNode?=?node;
}
}

//?圖深度優(yōu)先搜索算法
void?dfn(GraphicNode?*G?bool?*visited?int?current?vector?&index)
{
//printf(“vertex?=?%d\n“?current);
index.push_back(current);
visited[current]?=?true;
GraphicNode?*p?=?&G[current];
while?(p?!=?NULL)
{
if?(!visited[p->vertex])
{
dfn(G?visited?p->vertex?index);
}
p?=?p->nextNode;
}
}

//?圖連通域分量
void?DfnComponent(vector?pt?vector?>?&outdata)
{
//?統(tǒng)計(jì)節(jié)點(diǎn)個(gè)數(shù)?以空間消耗替代時(shí)間消耗
int?nodeNum?=?max(pt[0].start?pt[0].end);
int?startIndex?=?min(pt[0].start?pt[0].end);
for?(int?i?=?1;?i? {
if?(pt[i].start?>?nodeNum)
{
nodeNu

評(píng)論

共有 條評(píng)論

相關(guān)資源