91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 8KB
    文件類型: .cpp
    金幣: 1
    下載: 0 次
    發布日期: 2021-06-15
  • 語言: C/C++
  • 標簽: 八連通區??

資源簡介

有main函數的C++源碼,直接可運行,自己寫的二值圖像八連通區域,對應matlab中的bwlabel

資源截圖

代碼片段和文件信息

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






///?圖算法相關
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;?//頂點數據信息
GraphicNode?*nextNode;
}graphNode;


//?依據圖連通域分量合并錯分的runs,并重新賦值,返回實際的連通域個數
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;
}
}

//?圖深度優先搜索算法
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)
{
//?統計節點個數?以空間消耗替代時間消耗
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

評論

共有 條評論

相關資源