opencvsharp 根据row方向和面积筛选连通域的两种方式
阅读原文时间:2023年07月09日阅读:3

ConnectedComponents cc = Cv2.ConnectedComponentsEx(tempMat);//相当于halcon的connection获取全部连通域

int blobnumber=cc.Blobs.Count;//获取数量

//List Bloblists = cc.Blobs.OrderByDescending(t => t.Area).ToList();面积排序

//List Bloblist = Bloblists.Where(t => t.Area < 800).ToList(); //筛选面积

List newblobsRight = cc.Blobs.OrderByDescending(b => b.Left).Skip(blobnumber - 2).Take(blobnumber-1).ToList();

List newblobsLeft = cc.Blobs.OrderByDescending(b => b.Left).Take(1).ToList();

List newblobsRightList = cc.Blobs.OrderByDescending(b => b.Left).ToList();

//newblobsRightList.Reverse();

ConnectedComponents.Blob testBlob = newblobsRightList[0];

Mat testMat = Mat.Zeros(grayImage.Height, grayImage.Width, MatType.CV_8UC1);

Mat tmat = new Mat();

//cc.FilterBlobs(tempMat, tmat, newblobsLeft);//生成blob list的mat

cc.FilterByBlob(tempMat, tmat, testBlob);//生成blob的mat

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器