public List<Point> GetPoint()
{
List<Point> list = new List<Point>();
Mat src = Cv2.ImRead("C:\\2.png");
Mat hsv = new Mat();
Cv2.CvtColor(src, hsv, ColorConversionCodes.BGR2HSV);
Mat mask = new Mat();
Scalar a = Scalar.FromRgb(46, 43, 156);
Scalar b = Scalar.FromRgb(255, 255, 180);
Cv2.InRange(hsv, a, b, mask);
Mat result = new Mat();
Cv2.FindNonZero(mask, result);
for (int i = 0; i < result.Rows; i++)
{
list.Add(result.At<Point>(i));
}
return list;
}
其中,用到了opencv的函数:文章来源:https://www.toymoban.com/news/detail-528145.html
1. Cv2.CvtColor 颜色转换函数,将RGB颜色向HSV,HSI等颜色空间转换。本段代码是转成HSV
2. Cv2.InRange 用于选出指定颜色范围的区域。如果满足指定的范围,则这个像素点的值被置为255(白色),否则值被置为0(黑色)。本段代码的颜色区间是红色区间,如: Scalar a = Scalar.FromRgb(46, 43, 156); Scalar b = Scalar.FromRgb(255, 255, 180)
3. Cv2.FindNonZero 返回非零像素的位置列表(即白色区域)文章来源地址https://www.toymoban.com/news/detail-528145.html
到了这里,关于c# opencv 根据颜色得到不规则区域中的point的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!