根據朋友給的乙份原理寫的 感覺還挺清楚
#include "效果:cv.h
"#include
"highgui.h
"#include
using
namespace
cv;#define maxwidth 352
#define maxheight 288typedef
struct
ptnodeptnode;
void getccl(mat &imgsrc, mat &imgdst)
else
//前景
while(nodetmp2.parent != -1
)
if(nodetmp2.data > nodetmp1.data) //
小的序號做parent 大序號做child
else
if(nodetmp2.data }}
else
if(imgsrc.at(row, col) == imgsrc.at(row - 1, col)) //
僅與上面相同 序號等於上面
else
//與兩個方向的序號都不同 新建乙個序號 序號與位置相同
}else
if(row == 0 && col != 0) //
橫向邊界
else
}else
if(col == 0 && row != 0) //
豎向邊界
else
}else
//開始的(0 ,0)點 直接新建}}
}//file * out = fopen("d:\\dst.txt", "w");
//for(row = 0; row < imgsrc.rows; row++)
//
//fprintf(out, "\n");
//}//把森林中每乙個顆樹都標成統一的顏色
for(row = 0; row < imgsrc.rows; row++)
imgdst.at
(row, col) = nodetmp.data * 52 % 255; //
隨意設個顏色顯示
} }
}void
main()
字母檢測的很凌亂
但是單獨把乙個字母拿出來 放大再檢測就ok
找到上面多字母問題的原因了。問題出在下面一句:
imgdst.at(row, col) =nodenum;
這裡nodenum是可能超過255的 但是在傳給imgdst時被強制轉換成了uchar型,導致後面的結果出錯。
用tmp.create(imgsrc.rows, imgsrc.cols, cv_32f);來修改錯誤。
修改後的**如下:
#include "cv.h
"#include
"highgui.h
"#include
using
namespace
cv;#define maxwidth 352
#define maxheight 288typedef
struct
ptnodeptnode;
void getccl(mat &imgsrc, mat &imgdst)
else
//前景
while(nodetmp2.parent != -1
)
if(nodetmp2.data > nodetmp1.data) //
小的序號做parent 大序號做child
else
if(nodetmp2.data }}
else
if(imgsrc.at(row, col) == imgsrc.at(row - 1, col)) //
僅與上面相同 序號等於上面
else
//與兩個方向的序號都不同 新建乙個序號 序號與位置相同
}else
if(row == 0 && col != 0) //
橫向邊界
else
}else
if(col == 0 && row != 0) //
豎向邊界
else
}else
//開始的(0 ,0)點 直接新建}}
}//file * out = fopen("d:\\dst.txt", "w");
//for(row = 0; row < imgsrc.rows; row++)
//
//fprintf(out, "\n");
//}//把森林中每乙個顆樹都標成統一的顏色
for(row = 0; row < imgsrc.rows; row++)
imgdst.at
(row, col) = nodetmp.data * 51 % 255; //
隨意設個顏色顯示
修正後結果就好了。有幾個字母看起來像是丟了,其實是因為我隨機選顏色,可能導致用黑色填充。
python連通區域計算長度 連通區域演算法小結
聯通區域標記 connected component labeling 是影象處理裡面常用的乙個技術,它是用來檢測二值影象中聯通的區域,在許多跟蹤檢測演算法中充當目標區域檢測的作用。常見的ccl connected component labeling 包括two pass的方法和one pass的...
眼睛區域提取研究
能夠檢測人眼睜開或者閉合的檢測器如下 haarcascade mcs lefteye.xml and haarcascade mcs righteye.xml haarcascade lefteye 2splits.xml and haarcascade righteye 2splits.xml 只...
判斷有幾塊連通區域
隨筆寫的,感覺用得到 首先是輸入乙個陣列 由1和0組成 最後求四連通區域有幾個 如 1 1 1 0 0 0 0 1 0 0 0 0 1 1 0 0 有三個連通區域 思路如下 採用遞迴思想 一開始我是這麼想的,按行遍歷,若遇到乙個數字為1,那麼先看下面的是不是1,然後再看上面的,左面的,右面的,遞迴操...