BitwiseOr() public static method

computes bitwise disjunction of the two arrays (dst = src1 | src2)
public static BitwiseOr ( InputArray src1, InputArray src2, OutputArray dst, InputArray mask = null ) : void
src1 InputArray
src2 InputArray
dst OutputArray
mask InputArray
return void
コード例 #1
0
        /// <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);
            }
        }