public static BitwiseOr ( InputArray src1, InputArray src2, OutputArray dst, InputArray mask = null ) : void | ||
src1 | InputArray | |
src2 | InputArray | |
dst | OutputArray | |
mask | InputArray | |
return | void |
/// <summary> /// Filter a image with the specified label values. /// </summary> /// <param name="src">Source image.</param> /// <param name="dst">Destination image.</param> /// <param name="labelValues">Label values.</param> /// <returns>Filtered image.</returns> public Mat FilterByLabels(Mat src, Mat dst, IEnumerable <int> labelValues) { if (src == null) { throw new ArgumentNullException(nameof(src)); } if (dst == null) { throw new ArgumentNullException(nameof(dst)); } if (labelValues == null) { throw new ArgumentNullException(nameof(labelValues)); } var labelArray = labelValues.ToArray(); if (labelArray.Length == 0) { throw new ArgumentException("empty labelValues"); } foreach (var labelValue in labelArray) { if (labelValue < 0 || labelValue >= LabelCount) { throw new ArgumentException("0 <= x < LabelCount"); } } // マスク用Matを用意し、Andで切り抜く using (var mask = GetLabelMask(labelArray[0])) { for (var i = 1; i < labelArray.Length; i++) { using (var maskI = GetLabelMask(labelArray[i])) { Cv2.BitwiseOr(mask, maskI, mask); } } src.CopyTo(dst, mask); return(dst); } }