示例#1
0
        /// <summary>
        /// Print current pixel's coordinate
        /// </summary>
        /// <param name="image"></param>
        /// <param name="iterator"></param>
        private void PrintCoordinate(IplImage image, CvLineIterator iterator)
        {
            /* ROIは設定されていないと仮定している.もし設定されている場合には考慮する必要がある.*/
            int offset = iterator.Ptr.ToInt32() - image.ImageData.ToInt32();
            int y      = offset / image.WidthStep;
            int x      = (offset - y * image.WidthStep) / (3 * sizeof(byte) /* ピクセルのサイズ */);

            Console.WriteLine("(x:{0}, y:{1})", x, y);
        }
示例#2
0
        /// <summary>
        /// Calculate sum of line pixels (wrapper style)
        /// </summary>
        /// <param name="image"></param>
        /// <param name="pt1"></param>
        /// <param name="pt2"></param>
        /// <returns></returns>
        private CvScalar SumLinePixelsManaged(IplImage image, CvPoint pt1, CvPoint pt2)
        {            
            double blue_sum = 0, green_sum = 0, red_sum = 0;
            CvLineIterator iterator = new CvLineIterator(image, pt1, pt2, PixelConnectivity.Connectivity_8, false);

            foreach (CvScalar pixel in iterator)
            {
                blue_sum += pixel.Val0;   //blue_sum += iterator.ptr[0];
                green_sum += pixel.Val1;  //green_sum += iterator.ptr[1];
                red_sum += pixel.Val2;    //red_sum += iterator.ptr[2];

                PrintCoordinate(image, iterator);
            }
            return new CvScalar(blue_sum, green_sum, red_sum);
        }
示例#3
0
        /// <summary>
        /// Calculate sum of line pixels (wrapper style)
        /// </summary>
        /// <param name="image"></param>
        /// <param name="pt1"></param>
        /// <param name="pt2"></param>
        /// <returns></returns>
        private CvScalar SumLinePixelsManaged(IplImage image, CvPoint pt1, CvPoint pt2)
        {
            double blueSum = 0, greenSum = 0, redSum = 0;
            var    iterator = new CvLineIterator(image, pt1, pt2, PixelConnectivity.Connectivity8, false);

            foreach (CvScalar pixel in iterator)
            {
                blueSum  += pixel.Val0;  //blue_sum += iterator.ptr[0];
                greenSum += pixel.Val1;  //green_sum += iterator.ptr[1];
                redSum   += pixel.Val2;  //red_sum += iterator.ptr[2];

                PrintCoordinate(image, iterator);
            }
            return(new CvScalar(blueSum, greenSum, redSum));
        }
示例#4
0
 /// <summary>
 /// Print current pixel's coordinate
 /// </summary>
 /// <param name="image"></param>
 /// <param name="iterator"></param>
 private void PrintCoordinate(IplImage image, CvLineIterator iterator)
 {
     /* ROIは設定されていないと仮定している.もし設定されている場合には考慮する必要がある.*/
     int offset = iterator.Ptr.ToInt32() - image.ImageData.ToInt32();
     int y = offset / image.WidthStep;
     int x = (offset - y * image.WidthStep) / (3 * sizeof(byte) /* ピクセルのサイズ */);
     Console.WriteLine("(x:{0}, y:{1})", x, y);
 }