OpenCV 中与MATLAB bwlabel函数功能完全相同的函数————connectedComponents 还有skimage.measure.label 函数
matlab调用代码
L1 = bwlabel(DL);
- 其中 DL 是一8位单通道图像
函数原型
int cv::connectedComponents (InputArray image,
OutputArray labels,
int connectivity = 8,
int ltype = CV_32S )
- 功能 :计算布尔图像的连接组件标记图像
- 参数 :image 要标记的8位单通道图像
labels 目的地标记图像,是个元组,包括总的区域数,和每个像素点属于哪个区域的二维数组
connectivity 8路或4路连接,默认为8
ltype 输出图像标签类型。当前支持CV_32S和CV_16U。默认为CV_32S
更多函数,更具体的文档看OpenCV的类介绍文档与函数接口
代码示例
import pywt
import xlrd
import numpy as np
def excel2matrix(path): # 把xlsx文件的数据变成np.array数组
data = xlrd.open_workbook(path)
table = data.sheets()[0]
nrows = table.nrows # 行数
ncols = table.ncols # 列数
datamatrix = np.zeros((nrows, ncols))
for i in range(nrows):
rows = table.row_values(i)
datamatrix[i,:] = rows
return datamatrix
pathX = '18.xlsx' # 数据路径
x = excel2matrix(pathX) # 我的灰度图数据
x = x.astype(np.int8) # 输入必须是 8 位的整型
number, k = cv2.connectedComponents(x)
输出
数据集链接
- 链接:https://pan.baidu.com/s/1j2D_uMvtvytB3dJWpQ_Wew
- 提取码:z1vg
——————————————————————2020.11.5更新———————————————————
skimage.measure.label 函数
import pywt
import xlrd
import numpy as np
from skimage import measure
def excel2matrix(path): # 把xlsx文件的数据变成np.array数组
data = xlrd.open_workbook(path)
table = data.sheets()[0]
nrows = table.nrows # 行数
ncols = table.ncols # 列数
datamatrix = np.zeros((nrows, ncols))
for i in range(nrows):
rows = table.row_values(i)
datamatrix[i,:] = rows
return datamatrix
pathX = '18.xlsx' # 数据路径
x = excel2matrix(pathX) # 我的灰度图数据
x = x.astype(np.int8) # 输入必须是 8 位的整型
number, k = cv2.connectedComponents(x)
label_image = measure.label(x)
可以验证 k 与 label_image 的值完全相同
——————————————————————2020.11.5更新———————————————————