コード例 #1
0
ファイル: Detector.cs プロジェクト: smart-make/zxing
        private static PerspectiveTransform createTransform(ResultPoint topLeft, ResultPoint topRight, ResultPoint bottomLeft, ResultPoint alignmentPattern, int dimension)
        {
            float dimMinusThree = (float)dimension - 3.5f;
            float bottomRightX;
            float bottomRightY;
            float sourceBottomRightX;
            float sourceBottomRightY;

            if (alignmentPattern != null)
            {
                bottomRightX       = alignmentPattern.X;
                bottomRightY       = alignmentPattern.Y;
                sourceBottomRightX = dimMinusThree - 3.0f;
                sourceBottomRightY = sourceBottomRightX;
            }
            else
            {
                // Don't have an alignment pattern, just make up the bottom-right point
                bottomRightX       = (topRight.X - topLeft.X) + bottomLeft.X;
                bottomRightY       = (topRight.Y - topLeft.Y) + bottomLeft.Y;
                sourceBottomRightX = dimMinusThree;
                sourceBottomRightY = dimMinusThree;
            }

            return(PerspectiveTransform.quadrilateralToQuadrilateral(3.5f, 3.5f, dimMinusThree, 3.5f, sourceBottomRightX, sourceBottomRightY, 3.5f, dimMinusThree, topLeft.X, topLeft.Y, topRight.X, topRight.Y, bottomRightX, bottomRightY, bottomLeft.X, bottomLeft.Y));
        }
コード例 #2
0
        /// <summary>
        /// </summary>
        /// <param name="image"></param>
        /// <param name="dimensionX"></param>
        /// <param name="dimensionY"></param>
        /// <param name="p1ToX"></param>
        /// <param name="p1ToY"></param>
        /// <param name="p2ToX"></param>
        /// <param name="p2ToY"></param>
        /// <param name="p3ToX"></param>
        /// <param name="p3ToY"></param>
        /// <param name="p4ToX"></param>
        /// <param name="p4ToY"></param>
        /// <param name="p1FromX"></param>
        /// <param name="p1FromY"></param>
        /// <param name="p2FromX"></param>
        /// <param name="p2FromY"></param>
        /// <param name="p3FromX"></param>
        /// <param name="p3FromY"></param>
        /// <param name="p4FromX"></param>
        /// <param name="p4FromY"></param>
        /// <returns></returns>
        public override BitMatrix sampleGrid(BitMatrix image, int dimensionX, int dimensionY, float p1ToX, float p1ToY, float p2ToX, float p2ToY, float p3ToX, float p3ToY, float p4ToX, float p4ToY, float p1FromX, float p1FromY, float p2FromX, float p2FromY, float p3FromX, float p3FromY, float p4FromX, float p4FromY)
        {
            PerspectiveTransform transform = PerspectiveTransform.quadrilateralToQuadrilateral(
                p1ToX, p1ToY, p2ToX, p2ToY, p3ToX, p3ToY, p4ToX, p4ToY,
                p1FromX, p1FromY, p2FromX, p2FromY, p3FromX, p3FromY, p4FromX, p4FromY);

            return(sampleGrid(image, dimensionX, dimensionY, transform));
        }
コード例 #3
0
        public void testQuadrilateralToQuadrilateral()
        {
            PerspectiveTransform pt = PerspectiveTransform.quadrilateralToQuadrilateral(
                2.0f, 3.0f, 10.0f, 4.0f, 16.0f, 15.0f, 4.0f, 9.0f,
                103.0f, 110.0f, 300.0f, 120.0f, 290.0f, 270.0f, 150.0f, 280.0f);

            assertPointEquals(103.0f, 110.0f, 2.0f, 3.0f, pt);
            assertPointEquals(300.0f, 120.0f, 10.0f, 4.0f, pt);
            assertPointEquals(290.0f, 270.0f, 16.0f, 15.0f, pt);
            assertPointEquals(150.0f, 280.0f, 4.0f, 9.0f, pt);
            assertPointEquals(7.1516876f, -64.60185f, 0.5f, 0.5f, pt);
            assertPointEquals(328.09116f, 334.16385f, 50.0f, 50.0f, pt);
        }
コード例 #4
0
        private static PerspectiveTransform createTransform(ResultPoint topLeft, ResultPoint topRight, ResultPoint bottomLeft, ResultPoint alignmentPattern, int dimension)
        {
            //UPGRADE_WARNING: Data types in Visual C# might be different.  Verify the accuracy of narrowing conversions. "ms-help://MS.VSCC.v80/dv_commoner/local/redirect.htm?index='!DefaultContextWindowIndex'&keyword='jlca1042'"
            float dimMinusThree = (float)dimension - 3.5f;
            float bottomRightX;
            float bottomRightY;
            float sourceBottomRightX;
            float sourceBottomRightY;

            if (alignmentPattern != null)
            {
                bottomRightX       = alignmentPattern.X;
                bottomRightY       = alignmentPattern.Y;
                sourceBottomRightX = sourceBottomRightY = dimMinusThree - 3.0f;
            }
            else
            {
                // Don't have an alignment pattern, just make up the bottom-right point
                bottomRightX       = (topRight.X - topLeft.X) + bottomLeft.X;
                bottomRightY       = (topRight.Y - topLeft.Y) + bottomLeft.Y;
                sourceBottomRightX = sourceBottomRightY = dimMinusThree;
            }

            return(PerspectiveTransform.quadrilateralToQuadrilateral(
                       3.5f,
                       3.5f,
                       dimMinusThree,
                       3.5f,
                       sourceBottomRightX,
                       sourceBottomRightY,
                       3.5f,
                       dimMinusThree,
                       topLeft.X,
                       topLeft.Y,
                       topRight.X,
                       topRight.Y,
                       bottomRightX,
                       bottomRightY,
                       bottomLeft.X,
                       bottomLeft.Y));
        }