Example #1
1
        /// <summary>
        /// ハフ変換を用いて,グレースケール画像から円を検出します.
        /// </summary>
        /// <param name="image">8ビット,シングルチャンネル,グレースケールの入力画像></param>
        /// <param name="method">現在のところ,HoughCirclesMethod.Gradient メソッドのみが実装されている.</param>
        /// <param name="dp">画像分解能に対する投票分解能の比率の逆数.</param>
        /// <param name="minDist">検出される円の中心同士の最小距離.</param>
        /// <param name="param1">手法依存の1番目のパラメータ.[既定値は100]</param>
        /// <param name="param2">手法依存の2番目のパラメータ.[既定値は100]</param>
        /// <param name="minRadius">円の半径の最小値 [既定値は0]</param>
        /// <param name="maxRadius">円の半径の最大値 [既定値は0]</param>
        /// <returns>検出された円.各ベクトルは,3要素の浮動小数点型ベクトル (x, y, radius) としてエンコードされます</returns>
#else
        /// <summary>
        /// Finds circles in a grayscale image using a Hough transform.
        /// </summary>
        /// <param name="image">The 8-bit, single-channel, grayscale input image</param>
        /// <param name="method">Currently, the only implemented method is HoughCirclesMethod.Gradient</param>
        /// <param name="dp">The inverse ratio of the accumulator resolution to the image resolution. </param>
        /// <param name="minDist">Minimum distance between the centers of the detected circles. </param>
        /// <param name="param1">The first method-specific parameter. [By default this is 100]</param>
        /// <param name="param2">The second method-specific parameter. [By default this is 100]</param>
        /// <param name="minRadius">Minimum circle radius. [By default this is 0]</param>
        /// <param name="maxRadius">Maximum circle radius. [By default this is 0] </param>
        /// <returns>The output vector found circles. Each vector is encoded as 3-element floating-point vector (x, y, radius)</returns>
#endif
        public static CvCircleSegment[] HoughCircles(this Mat image, HoughCirclesMethod method, double dp, double minDist, double param1 = 100, double param2 = 100, int minRadius = 0, int maxRadius = 0)
        {
            if (image == null)
                throw new ArgumentNullException("image");

            using (StdVectorVec3f vec = new StdVectorVec3f())
            {
                CppInvoke.cv_HoughCircles(image.CvPtr, vec.CvPtr, method, dp, minDist, param1, param2, minRadius, maxRadius);
                return vec.ToArray<CvCircleSegment>();
            }
        }
Example #2
0
        /// <summary>
        /// ハフ変換を用いて,グレースケール画像から円を検出します.
        /// </summary>
        /// <param name="image">8ビット,シングルチャンネル,グレースケールの入力画像></param>
        /// <param name="method">現在のところ,HoughCirclesMethod.Gradient メソッドのみが実装されている.</param>
        /// <param name="dp">画像分解能に対する投票分解能の比率の逆数.</param>
        /// <param name="minDist">検出される円の中心同士の最小距離.</param>
        /// <returns>検出された円.各ベクトルは,3要素の浮動小数点型ベクトル (x, y, radius) としてエンコードされます</returns>
#else
        /// <summary>
        /// Finds circles in a grayscale image using a Hough transform.
        /// </summary>
        /// <param name="image">The 8-bit, single-channel, grayscale input image</param>
        /// <param name="method">Currently, the only implemented method is HoughCirclesMethod.Gradient</param>
        /// <param name="dp">The inverse ratio of the accumulator resolution to the image resolution. </param>
        /// <param name="minDist">Minimum distance between the centers of the detected circles. </param>
        /// <returns>The output vector found circles. Each vector is encoded as 3-element floating-point vector (x, y, radius)</returns>
#endif
        public static CvCircleSegment[] HoughCircles(Mat image, HoughCirclesMethod method, double dp, double minDist)
        {
            if (image == null)
                throw new ArgumentNullException("image");

            using (StdVectorVec3f vec = new StdVectorVec3f())
            {
                CppInvoke.cv_HoughCircles(image.CvPtr, vec.CvPtr, method, dp, minDist, 100, 100, 0, 0);
                return vec.ToArray<CvCircleSegment>();
            }
        }