本文整理汇总了C#中System.Windows.Media.Imaging.WriteableBitmap.Crop方法的典型用法代码示例。如果您正苦于以下问题:C# WriteableBitmap.Crop方法的具体用法?C# WriteableBitmap.Crop怎么用?C# WriteableBitmap.Crop使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Windows.Media.Imaging.WriteableBitmap
的用法示例。
在下文中一共展示了WriteableBitmap.Crop方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: DrawPreviewImage
private void DrawPreviewImage(WriteableBitmap bitmap)
{
if (live_view_image.ActualWidth == 0 || panel_preview.ActualWidth == 0)
return;
double dw = panel_preview.ActualWidth/live_view_image.ActualWidth;
double dh = panel_preview.ActualHeight/live_view_image.ActualHeight;
double d = bitmap.PixelWidth*dw/ZoomFactor;
double h = bitmap.PixelHeight*dh/ZoomFactor;
WriteableBitmap tempbitmap = bitmap.Crop((int) (CentralPoint.X - (d/2)), (int) (CentralPoint.Y - (h/2)),
(int) d, (int) h);
tempbitmap.Freeze();
img_preview.Source = tempbitmap;
}
示例2: GetCroppedPart
private WriteableBitmap GetCroppedPart(WriteableBitmap source, RectangleF relativeRect)
{
double width = source.Width;
double height = source.Height;
double rleft = relativeRect.Left * width / 100;
double rtop = relativeRect.Top * height / 100;
double rwidth = relativeRect.Width * width / 100;
double rheight = relativeRect.Height * height / 100;
Rect r = new Rect(rleft, rtop, rwidth, rheight);
return source.Crop(r);
}
示例3: ResizeAndCopyImageToShared
private static string ResizeAndCopyImageToShared(string imageUrl, int page)
{
var newUrl = string.Format("/Shared/ShellContent/{0}.jpg", page);
using (var isf = IsolatedStorageFile.GetUserStoreForApplication())
{
if (!isf.FileExists(newUrl))
{
BitmapImage source = new BitmapImage(new Uri(imageUrl, UriKind.Relative));
WriteableBitmap bitmap = new WriteableBitmap(source);
bitmap.Crop(0, 0, 137, 137);
using (var fileStream = isf.CreateFile(newUrl))
{
bitmap.SaveJpeg(fileStream, 137, 137, 0, 100);
}
}
}
return newUrl;
}
示例4: DrawBlobBoundingBoxsCV
public static WriteableBitmap DrawBlobBoundingBoxsCV(WriteableBitmap writeableBitmap, WriteableBitmap gradientBitmapRef, WriteableBitmap realBitmapRef)
{
Bitmap normalBitmap = BitmapFromWriteableBitmap(writeableBitmap);
var cvImage = new Image<Gray, byte>(new Bitmap(normalBitmap));
//var classifications = ClassifyBitmap( writeableBitmap, cvImage );
if (cvImage != null)
{
// This takes our nice looking color png and converts it to black and white
Image<Gray, byte> greyImg = cvImage.Convert<Gray, byte>();
// We again threshold it based on brightness...BUT WE INVERT THE PNG. BLOB DETECTOR DETECTS WHITE NOT BLACK
// this will esentially eliminate the color differences
// you could also do cool things like threshold only certain colors here for a color based blob detector
Image<Gray, Byte> greyThreshImg = greyImg.ThresholdBinaryInv(new Gray(150), new Gray(255));
Emgu.CV.Cvb.CvBlobs resultingImgBlobs = new Emgu.CV.Cvb.CvBlobs();
Emgu.CV.Cvb.CvBlobDetector bDetect = new Emgu.CV.Cvb.CvBlobDetector();
uint numWebcamBlobsFound = bDetect.Detect(greyThreshImg, resultingImgBlobs);
// This is a simple way of just drawing all blobs reguardless of their size and not iterating through them
// It draws on top of whatever you input. I am inputting the threshold image. Specifying an alpha to draw with of 0.5 so its half transparent.
//Emgu.CV.Image<Bgr, byte> blobImg = bDetect.DrawBlobs(webcamThreshImg, resultingWebcamBlobs, Emgu.CV.Cvb.CvBlobDetector.BlobRenderType.Default, 0.5);
// Here we can iterate through each blob and use the slider to set a threshold then draw a red box around it
Image<Rgb, byte> blobImg = greyThreshImg.Convert<Rgb, byte>();
Rgb red = new Rgb(255, 0, 0);
int blobNumber = 0;
// Lets try and iterate the blobs?
foreach (Emgu.CV.Cvb.CvBlob targetBlob in resultingImgBlobs.Values)
{
int imageArea = blobImg.Width*blobImg.Height;
int blobArea = targetBlob.Area;
int blobBoundingBoxArea = targetBlob.BoundingBox.Width*targetBlob.BoundingBox.Height;
// Only use blobs with area greater than some threshold
// If the blob bounding rect is basically size of the whole image ignore it for now
if (blobArea > 200.0 && blobBoundingBoxArea < (imageArea*0.99))
{
Rectangle rectangle = targetBlob.BoundingBox;
int CentroidX = (int)targetBlob.Centroid.X;
int CentroidY = (int)targetBlob.Centroid.Y;
int croppedWidth = rectangle.Width + 50;
int croppedHeight = rectangle.Height + 50;
int CroppedX = CentroidX - (int)(croppedWidth / 2.0);
int CroppedY = CentroidY - (int)(croppedHeight / 2.0);
var croppedBlobBitmap = writeableBitmap.Crop(CroppedX, CroppedY, croppedWidth, croppedHeight);
var croppedGradientBlobBitmap = gradientBitmapRef.Crop(CroppedX, CroppedY, croppedWidth, croppedHeight);
var croppedRealBitmapRef = realBitmapRef.Crop(CroppedX, CroppedY, croppedWidth, croppedHeight);
double blobAngle = -RadianToDegree(CalculateBlobAngle(targetBlob));
CroppedX = (int) (croppedWidth/2.0);
CroppedY = (int) (croppedHeight/2.0);
var rotatedandCroppedBlobBitmap = RotateWriteableBitmap(croppedBlobBitmap, blobAngle);
var rotatedGradientBlobBitmap = RotateColorWriteableBitmap(croppedGradientBlobBitmap, blobAngle);
var rotatedRealBitmapRef = RotateColorWriteableBitmap(croppedRealBitmapRef, blobAngle);
var refinedBitmap = DrawBlobBoundingBoxsAroundCroppedBitmap(rotatedandCroppedBlobBitmap, rotatedGradientBlobBitmap, rotatedRealBitmapRef, 1);
rotatedGradientBlobBitmap = DrawBlobBoundingBoxsAroundCroppedBitmap(rotatedandCroppedBlobBitmap, rotatedGradientBlobBitmap, rotatedRealBitmapRef, 2);
rotatedRealBitmapRef = DrawBlobBoundingBoxsAroundCroppedBitmap(rotatedandCroppedBlobBitmap, rotatedGradientBlobBitmap, rotatedRealBitmapRef, 3);
var areaCheck = refinedBitmap.PixelHeight*refinedBitmap.PixelWidth;
if (areaCheck >= 200)
{
blobNumber++;
var thresholded = refinedBitmap.Clone();
ThresholdBitmap(thresholded, 10, false);
BitmapColorer.ColorBitmap(thresholded);
System.Windows.Media.Color blobColor = PixelColorOfCentralBlob(thresholded);
BitmapColorer.EraseAllButCertainColorandWhite(thresholded, blobColor);
var shouldFlip = shouldFlipThresholdedBitmap(thresholded, blobColor);
if (shouldFlip)
{
thresholded = thresholded.Rotate(180);
rotatedGradientBlobBitmap = rotatedGradientBlobBitmap.Rotate(180);
rotatedRealBitmapRef = rotatedRealBitmapRef.Rotate(180);
}
var orientedBitmap = NormalizeBitmapSize(thresholded);
var orientedGradientBitmap = NormalizeBitmapSize(rotatedGradientBlobBitmap);
var orientedRealBitmap = NormalizeBitmapSize(rotatedRealBitmapRef);
ApplyBlobMaskToOtherBitmaps(orientedBitmap, orientedGradientBitmap, orientedRealBitmap, blobColor);
string fileName1 = saveDirectory + "\\croppedBlob" + blobNumber + ".png";
ExtensionMethods.Save(orientedRealBitmap, fileName1);
//.........这里部分代码省略.........
示例5: DrawBlobBoundingBoxsAroundCroppedBitmap
public static WriteableBitmap DrawBlobBoundingBoxsAroundCroppedBitmap(WriteableBitmap writeableBitmap,
WriteableBitmap gradientBitmapRef, WriteableBitmap realBitmapRef, int returnBitmapIndex)
{
Bitmap normalBitmap = BitmapFromWriteableBitmap(writeableBitmap);
var cvImage = new Image<Gray, byte>(new Bitmap(normalBitmap));
if (cvImage != null)
{
Image<Gray, byte> greyImg = cvImage.Convert<Gray, byte>();
Image<Gray, Byte> greyThreshImg = greyImg.ThresholdBinaryInv(new Gray(150), new Gray(255));
Emgu.CV.Cvb.CvBlobs resultingImgBlobs = new Emgu.CV.Cvb.CvBlobs();
Emgu.CV.Cvb.CvBlobDetector bDetect = new Emgu.CV.Cvb.CvBlobDetector();
uint numWebcamBlobsFound = bDetect.Detect(greyThreshImg, resultingImgBlobs);
Image<Rgb, byte> blobImg = greyThreshImg.Convert<Rgb, byte>();
Rgb red = new Rgb(255, 0, 0);
int blobNumber = 0;
foreach (Emgu.CV.Cvb.CvBlob targetBlob in resultingImgBlobs.Values)
{
int imageArea = blobImg.Width*blobImg.Height;
int blobArea = targetBlob.Area;
int blobBoundingBoxArea = targetBlob.BoundingBox.Width*targetBlob.BoundingBox.Height;
if (blobArea > 200.0 && blobBoundingBoxArea < (imageArea*0.99))
{
blobNumber++;
Rectangle rectangle = targetBlob.BoundingBox;
Rect convertedRect = new Rect(rectangle.X - 10, rectangle.Y - 10, rectangle.Width + 20,
rectangle.Height + 20);
//BitmapColorer.DrawRectangle(writeableBitmap, convertedRect);
writeableBitmap = writeableBitmap.Crop(rectangle.X - 10, rectangle.Y - 10, rectangle.Width + 20,
rectangle.Height + 20);
gradientBitmapRef = gradientBitmapRef.Crop(rectangle.X - 10, rectangle.Y - 10,
rectangle.Width + 20, rectangle.Height + 20);
realBitmapRef = realBitmapRef.Crop(rectangle.X - 10, rectangle.Y - 10, rectangle.Width + 20,
rectangle.Height + 20);
}
}
}
if (returnBitmapIndex == 1)
{
return writeableBitmap;
}
else if (returnBitmapIndex == 2)
{
return gradientBitmapRef;
}
else
{
return realBitmapRef;
}
}
示例6: OnImageLoaded
// Image finished loading
private void OnImageLoaded(object sender, EventArgs e)
{
BitmapImage sourceImage = (BitmapImage)sender;
WriteableBitmap scaledImage = new WriteableBitmap(sourceImage);
scaledImage.Resize((int)Width, (int)Height, WriteableBitmapExtensions.Interpolation.Bilinear);
double w = Width;
double h = Height;
double cellWidth = w;
double cellHeight = h / NumBlinds;
for (int i = 0; i < NumBlinds; i++)
{
// Create the target cell
Image cell = new Image();
Rect rect = new Rect(0, i * cellHeight, cellWidth, cellHeight);
cell.SetValue(Canvas.TopProperty, rect.Y);
cell.SetValue(Canvas.LeftProperty, rect.X);
cell.Width = cellWidth;
cell.Height = cellHeight;
cell.Visibility = Visibility.Collapsed;
contentView.Children.Add(cell);
nextGrid.Add(cell);
WriteableBitmap slice = scaledImage.Crop(rect);
cell.Source = slice;
}
for(int i = 0; i < NumBlinds; i++)
{
animatedCellIndex.Add(i);
}
// Do animation
int firstCellIndex = animatedCellIndex[0];
PerformFlipAnimation(grid[firstCellIndex], nextGrid[firstCellIndex]);
}