本文整理汇总了C#中System.Drawing.Image.Copy方法的典型用法代码示例。如果您正苦于以下问题:C# Image.Copy方法的具体用法?C# Image.Copy怎么用?C# Image.Copy使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Drawing.Image
的用法示例。
在下文中一共展示了Image.Copy方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: ExtractGemSlots
/// <summary>
/// Extracts each gems rectangle in the image
/// </summary>
/// <param name="screenshot">An image of the current playing area (without windowborders)</param>
/// <param name="gemSlots"></param>
/// <returns>A two-dimensional array of images in the [row,column] format</returns>
public Image<Bgr, byte>[,] ExtractGemSlots(Image<Bgr, byte> screenshot, GemSlot[,] gemSlots)
{
#if SAVEIMAGES
string basePath = "abc\\";
foreach(GemColor color in Enum.GetValues(typeof(GemColor)))
{
if (!System.IO.Directory.Exists(basePath + color))
System.IO.Directory.CreateDirectory(basePath + color);
}
#endif
Image<Bgr, byte>[,] gemSlotImages = new Image<Bgr, byte>[8,8];
for (int row = 0; row < 8; row++)
{
for (int column = 0; column < 8; column++)
{
Rectangle gemSlotRectangle = gemSlots[row, column].Rectangle;
gemSlotImages[row, column] = screenshot.Copy(gemSlotRectangle);
#if SAVEIMAGES
Random rand = new Random();
Gem prediction = (new SimpleGemClassifier().ClassifyGem(gemSlotImages[row, column]));
gemSlotImages[row, column].Save("abc\\" + prediction.Color.ToString() + "\\" + rand.Next() + "." + row + "." + column + ".png");
#endif
}
}
return gemSlotImages;
}
示例2: Process
public DetectorResult Process(Image<Bgr, byte> rawFrame, Image<Gray, byte> grayFrame)
{
grayFrame.PyrDown().PyrUp();
var processedFrame = rawFrame.Copy();
Gray cannyThreshold = new Gray(180);
Gray circleAccumulatorThreshold = new Gray(500);
CircleF[] circles = grayFrame.HoughCircles(
cannyThreshold,
circleAccumulatorThreshold,
4.0, //Resolution of the accumulator used to detect centers of the circles
15.0, //min distance
5, //min radius
0 //max radius
)[0]; //Get the circles from the first channel
foreach (CircleF circle in circles)
{
processedFrame.Draw(circle, new Bgr(Color.DarkRed), 1);
}
return new DetectorResult() {RawImage = rawFrame, GrayImage = grayFrame, ProcessedImage = processedFrame};
}
示例3: PreProcess
public override IDataContainer PreProcess(IDataContainer dataContainer)
{
_debugOutputImage = new Image<Rgb, byte>(Width, Height);
var rgbImage = dataContainer.OfType<RgbImageData>().ToArray();
if (!rgbImage.Any()) return null;
_debugOutputImage += rgbImage.First().Image.Copy();
var devices = dataContainer.OfType<Device>().ToArray();
//var unknownDevices = dataContainer.OfType<Device>().Where(d => !d.IsIdentified).ToArray();
var hands = dataContainer.OfType<Hand>().ToArray();
foreach (var device in devices)
{
var polyline = new List<Point>();
foreach (var point in device.Shape.Points)
{
var x = point.X * Width;
var y = point.Y * Height;
polyline.Add(new Point((int)x, (int)y));
}
var centerX = (int)(device.SmoothedCenter.X / 320 * Width);
var centerY = (int)(device.SmoothedCenter.Y / 240 * Height);
_debugOutputImage.DrawPolyline(polyline.ToArray(), true, device.IsIdentified ? Rgbs.Red : Rgbs.White, 5);
if (device.IsIdentified)
_debugOutputImage.Draw(string.Format("Id {0}", device.DeviceId), ref EmguFontBig, new Point(centerX, centerY), Rgbs.Red);
}
foreach (var hand in hands)
{
var resizedHandSegment = hand.Segment.Resize(_debugOutputImage.Width, _debugOutputImage.Height, INTER.CV_INTER_CUBIC).Mul(255);
//_debugOutputImage = _debugOutputImage.Copy(resizedHandSegment.Not());
_debugOutputImage = _debugOutputImage.AddWeighted(resizedHandSegment.Convert<Rgb, byte>(), 1.0, 0.5, 0.0);
resizedHandSegment.Dispose();
var point = new Point((int)(hand.RelativeCenter.X * Width), (int)(hand.RelativeCenter.Y * Height));
var labelPoint = new Point((int)(hand.RelativeCenter.X * Width + 30), (int)(hand.RelativeCenter.Y * Height));
_debugOutputImage.Draw(new CircleF(point, 10), Rgbs.Red, 6);
_debugOutputImage.Draw(string.Format("Id {0} (d={1:F0})", hand.Id, hand.Depth), ref EmguFontBig, labelPoint, Rgbs.Red);
}
var debugOutputImageCopy = _debugOutputImage.Copy();
Task.Factory.StartNew(() =>
{
var bitmapSource = debugOutputImageCopy.ToBitmapSource(true);
debugOutputImageCopy.Dispose();
return bitmapSource;
}).ContinueWith(t => DebugOutputBitmapSource = t.Result);
Stage(new RgbImageData(this, "DataRenderer", _debugOutputImage.Copy()));
if (_videoWriter != null)
_videoWriter.WriteFrame(_debugOutputImage.Convert<Bgr, byte>());
_debugOutputImage.Dispose();
Push();
return base.PreProcess(dataContainer);
}
示例4: Grab
public Image<Bgra, byte> Grab(Image<Bgra, byte> windowContents)
{
return windowContents.Copy(_rectangle);
}