Checking qr code and the template

This commit is contained in:
Jan Zubrycki 2020-06-19 16:12:18 +02:00
parent 0fa57c451c
commit bf7de908d0
11 changed files with 38696 additions and 23 deletions

View File

@ -188,6 +188,9 @@ namespace WebApplication5.Controllers
Categories = new List<TemplateViewModel>() { catq1, catq2 }
};
var x = new CheckCards(_db);
x.CheckFolder("");
var generator = new TemplateGenerator(_db, templatesToGenerate);
generator.ProcessOrder();

Binary file not shown.

View File

@ -0,0 +1,902 @@
<?xml version="1.0"?>
<doc>
<assembly>
<name>Emgu.CV.Platform.NetFramework</name>
</assembly>
<members>
<member name="T:Emgu.CV.BitmapExtension">
<summary>
Provide extension method to convert IInputArray to and from Bitmap
</summary>
</member>
<member name="F:Emgu.CV.BitmapExtension.GrayscalePalette">
<summary>
The ColorPalette of Grayscale for Bitmap Format8bppIndexed
</summary>
</member>
<member name="M:Emgu.CV.BitmapExtension.ColorPaletteToLookupTable(System.Drawing.Imaging.ColorPalette,Emgu.CV.Matrix{System.Byte}@,Emgu.CV.Matrix{System.Byte}@,Emgu.CV.Matrix{System.Byte}@,Emgu.CV.Matrix{System.Byte}@)">
<summary>
Convert the color palette to four lookup tables
</summary>
<param name="palette">The color palette to transform</param>
<param name="bTable">Lookup table for the B channel</param>
<param name="gTable">Lookup table for the G channel</param>
<param name="rTable">Lookup table for the R channel</param>
<param name="aTable">Lookup table for the A channel</param>
</member>
<member name="M:Emgu.CV.BitmapExtension.RawDataToBitmap(System.IntPtr,System.Int32,System.Drawing.Size,System.Type,System.Int32,System.Type,System.Boolean)">
<summary>
Convert raw data to bitmap
</summary>
<param name="scan0">The pointer to the raw data</param>
<param name="step">The step</param>
<param name="size">The size of the image</param>
<param name="srcColorType">The source image color type</param>
<param name="numberOfChannels">The number of channels</param>
<param name="srcDepthType">The source image depth type</param>
<param name="tryDataSharing">Try to create Bitmap that shares the data with the image</param>
<returns>The Bitmap</returns>
</member>
<member name="M:Emgu.CV.BitmapExtension.ToBitmap(Emgu.CV.Mat)">
<summary>
Convert the mat into Bitmap, the pixel values are copied over to the Bitmap
</summary>
</member>
<member name="M:Emgu.CV.BitmapExtension.ToBitmap(Emgu.CV.UMat)">
<summary>
Convert the umat into Bitmap, the pixel values are copied over to the Bitmap
</summary>
</member>
<member name="M:Emgu.CV.BitmapExtension.ToBitmap(Emgu.CV.Cuda.GpuMat)">
<summary>
Convert the gpuMat into Bitmap, the pixel values are copied over to the Bitmap
</summary>
</member>
<member name="M:Emgu.CV.BitmapExtension.ToImage``2(System.Drawing.Bitmap)">
<summary>
Create an Image &lt; TColor, TDepth &gt; from Bitmap
</summary>
</member>
<member name="M:Emgu.CV.BitmapExtension.CopyFromBitmap``2(Emgu.CV.Image{``0,``1},System.Drawing.Bitmap)">
<summary>
Utility function for converting Bitmap to Image
</summary>
<param name="bmp">the bitmap to copy data from</param>
<param name="image">The image to copy data to</param>
</member>
<member name="M:Emgu.CV.BitmapExtension.AsBitmap``2(Emgu.CV.Image{``0,``1})">
<summary>
Provide a more efficient way to convert Image&lt;Gray, Byte&gt;, Image&lt;Bgr, Byte&gt; and Image&lt;Bgra, Byte&gt; into Bitmap
such that the image data is <b>shared</b> with Bitmap.
If you change the pixel value on the Bitmap, you change the pixel values on the Image object as well!
For other types of image this property has the same effect as ToBitmap()
<b>Take extra caution not to use the Bitmap after the Image object is disposed</b>
</summary>
<typeparam name="TColor">The color of the image</typeparam>
<typeparam name="TDepth">The depth of the image</typeparam>
<param name="image">The image to create Bitmap from</param>
<returns>A bitmap representation of the image. In the cases of Image&lt;Gray, Byte&gt;, Image&lt;Bgr, Byte&gt; and Image&lt;Bgra, Byte&gt;, the image data is shared between the Bitmap and the Image object.</returns>
</member>
<member name="M:Emgu.CV.BitmapExtension.ToBitmap``2(Emgu.CV.Image{``0,``1})">
<summary>
Convert this image into Bitmap, the pixel values are copied over to the Bitmap
</summary>
<remarks> For better performance on Image&lt;Gray, Byte&gt; and Image&lt;Bgr, Byte&gt;, consider using the Bitmap property </remarks>
<returns> This image in Bitmap format, the pixel data are copied over to the Bitmap</returns>
</member>
<member name="M:Emgu.CV.BitmapExtension.ToBitmap``2(Emgu.CV.Image{``0,``1},System.Int32,System.Int32)">
<summary> Create a Bitmap image of certain size</summary>
<param name="image">The image to be converted to Bitmap</param>
<param name="width">The width of the bitmap</param>
<param name="height"> The height of the bitmap</param>
<returns> This image in Bitmap format of the specific size</returns>
</member>
<member name="M:Emgu.CV.BitmapExtension.ToBitmap``2(Emgu.CV.Cuda.CudaImage{``0,``1})">
<summary>
Convert the CudaImage to its equivalent Bitmap representation
</summary>
</member>
<member name="T:Emgu.CV.BitmapFileReaderMat">
<summary>
Class that can be used to read file into Mat
</summary>
</member>
<member name="M:Emgu.CV.BitmapFileReaderMat.ReadFile(System.String,Emgu.CV.Mat,Emgu.CV.CvEnum.ImreadModes)">
<summary>
Read the file into a Mat
</summary>
<param name="fileName">The name of the image file</param>
<param name="mat">The Mat to read into</param>
<param name="loadType">Image load type.</param>
<returns>True if the file can be read into the Mat</returns>
</member>
<member name="T:Emgu.CV.BitmapFileWriterMat">
<summary>
Class that can be used to write the Mat to a file
</summary>
</member>
<member name="M:Emgu.CV.BitmapFileWriterMat.WriteFile(Emgu.CV.Mat,System.String)">
<summary>
Write the Mat into the file
</summary>
<param name="mat">The Mat to write</param>
<param name="fileName">The name of the file to be written into</param>
<returns>True if the file has been written into Mat</returns>
</member>
<member name="T:Emgu.CV.UI.HistogramBox">
<summary>
The control that is used to display histogram
</summary>
</member>
<member name="M:Emgu.CV.UI.HistogramBox.#ctor">
<summary>
Construct a histogram control
</summary>
</member>
<member name="M:Emgu.CV.UI.HistogramBox.GenerateHistogram(System.String,System.Drawing.Color,Emgu.CV.Mat,System.Int32,System.Single[])">
<summary>
Add a plot of the 1D histogram. You should call the Refresh() function to update the control after all modification is complete.
</summary>
<param name="name">The name of the histogram</param>
<param name="color">The drawing color</param>
<param name="histogram">The 1D histogram to be drawn</param>
<param name="binSize">The size of the bin</param>
<param name="ranges">The ranges</param>
</member>
<member name="M:Emgu.CV.UI.HistogramBox.GenerateHistograms(Emgu.CV.IInputArray,System.Int32)">
<summary>
Generate histograms for the image. One histogram is generated for each color channel.
You will need to call the Refresh function to do the painting afterward.
</summary>
<param name="image">The image to generate histogram from</param>
<param name="numberOfBins">The number of bins for each histogram</param>
</member>
<member name="M:Emgu.CV.UI.HistogramBox.ClearHistogram">
<summary>
Remove all the histogram from the control. You should call the Refresh() function to update the control after all modification is complete.
</summary>
</member>
<member name="T:Emgu.CV.UI.HistogramViewer">
<summary>
A view for histogram
</summary>
</member>
<member name="M:Emgu.CV.UI.HistogramViewer.#ctor">
<summary>
A histogram viewer
</summary>
</member>
<member name="M:Emgu.CV.UI.HistogramViewer.Show(Emgu.CV.IInputArray)">
<summary>
Display the histograms of the specific image
</summary>
<param name="image">The image to retrieve histogram from</param>
</member>
<member name="M:Emgu.CV.UI.HistogramViewer.Show(Emgu.CV.IInputArray,System.Int32)">
<summary>
Display the histograms of the specific image
</summary>
<param name="image">The image to retrieve histogram from</param>
<param name="numberOfBins">The number of bins in the histogram</param>
</member>
<member name="P:Emgu.CV.UI.HistogramViewer.HistogramCtrl">
<summary>
Get the histogram control of this viewer
</summary>
</member>
<member name="F:Emgu.CV.UI.HistogramViewer.components">
<summary>
Required designer variable.
</summary>
</member>
<member name="M:Emgu.CV.UI.HistogramViewer.Dispose(System.Boolean)">
<summary>
Clean up any resources being used.
</summary>
<param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
</member>
<member name="M:Emgu.CV.UI.HistogramViewer.InitializeComponent">
<summary>
Required method for Designer support - do not modify
the contents of this method with the code editor.
</summary>
</member>
<member name="T:Emgu.CV.UI.ImageBox">
<summary>
An image box is a user control that is similar to picture box, but display Emgu CV IImage and provides enhenced functionalities.
</summary>
</member>
<member name="F:Emgu.CV.UI.ImageBox._image">
<summary>
The image that is setted throught the Image property
</summary>
</member>
<member name="F:Emgu.CV.UI.ImageBox._displayedImage">
<summary>
The image that is displayed
</summary>
</member>
<member name="F:Emgu.CV.UI.ImageBox._typeToToolStripMenuItemsDictionary">
<summary>
A cache to store the ToolStripMenuItems for different types of images
</summary>
</member>
<member name="F:Emgu.CV.UI.ImageBox._operationLists">
<summary>
The list of operations binded to this ImageBox
</summary>
</member>
<member name="F:Emgu.CV.UI.ImageBox._timerStartTime">
<summary>
Timer used for caculating the frame rate
</summary>
</member>
<member name="F:Emgu.CV.UI.ImageBox._imagesReceivedSinceCounterStart">
<summary>
One of the parameters used for caculating the frame rate
</summary>
</member>
<member name="M:Emgu.CV.UI.ImageBox.#ctor">
<summary>
Create a ImageBox
</summary>
</member>
<member name="P:Emgu.CV.UI.ImageBox.FunctionalMode">
<summary>
Get or set the functional mode for the ImageBox
</summary>
</member>
<member name="E:Emgu.CV.UI.ImageBox.OnFunctionalModeChanged">
<summary>
The event which will be trigerred when functional mode is changed
</summary>
</member>
<member name="P:Emgu.CV.UI.ImageBox.Image">
<summary>
Set the image for this image box
</summary>
</member>
<member name="P:Emgu.CV.UI.ImageBox.DisplayedImage">
<summary>
The image that is being displayed. It's the Image following by some user defined image operation
</summary>
</member>
<member name="M:Emgu.CV.UI.ImageBox.PushOperation(Emgu.CV.UI.Operation)">
<summary>
Push the specific operation to the operation collection
</summary>
<param name="operation">The operation to be pushed onto the operation collection</param>
</member>
<member name="M:Emgu.CV.UI.ImageBox.ClearOperation">
<summary>
Remove all the operations from the collection
</summary>
</member>
<member name="M:Emgu.CV.UI.ImageBox.PopOperation">
<summary>
Remove the last added operation
</summary>
</member>
<member name="T:Emgu.CV.UI.ImageBox.FunctionalModeOption">
<summary>
The functional mode for ImageBox
</summary>
</member>
<member name="F:Emgu.CV.UI.ImageBox.FunctionalModeOption.Minimum">
<summary>
The ImageBox is only used for displaying image.
No right-click menu nor Pan/Zoom available
</summary>
</member>
<member name="F:Emgu.CV.UI.ImageBox.FunctionalModeOption.RightClickMenu">
<summary>
Enable the right click menu
</summary>
</member>
<member name="F:Emgu.CV.UI.ImageBox.FunctionalModeOption.PanAndZoom">
<summary>
Enable Pan and Zoom
</summary>
</member>
<member name="F:Emgu.CV.UI.ImageBox.FunctionalModeOption.Everything">
<summary>
Support for the right click menu, Pan and Zoom
</summary>
</member>
<member name="M:Emgu.CV.UI.ImageBox.Dispose(System.Boolean)">
<summary>
Clean up any resources being used.
</summary>
<param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
</member>
<member name="F:Emgu.CV.UI.ImageBox.components">
<summary>
Required designer variable.
</summary>
</member>
<member name="M:Emgu.CV.UI.ImageBox.InitializeComponent">
<summary>
Required method for Designer support - do not modify
the contents of this method with the code editor.
</summary>
</member>
<member name="T:Emgu.CV.UI.ImageProperty">
<summary>
The control to display image properties
</summary>
</member>
<member name="M:Emgu.CV.UI.ImageProperty.#ctor">
<summary>
Create a ImageProperty control
</summary>
</member>
<member name="P:Emgu.CV.UI.ImageProperty.ImageBox">
<summary>
The parent imagebox for this property panel
</summary>
</member>
<member name="M:Emgu.CV.UI.ImageProperty.SetMousePositionOnImage(System.Drawing.Point)">
<summary>
Set the mouse position over the image.
It also set the color intensity of the pixel on the image where is mouse is at
</summary>
<param name="location">The location of the mouse on the image</param>
</member>
<member name="M:Emgu.CV.UI.ImageProperty.SetOperations(System.Collections.Generic.List{Emgu.CV.UI.Operation})">
<summary>
Set the description of the operation view
</summary>
</member>
<member name="P:Emgu.CV.UI.ImageProperty.FramesPerSecondText">
<summary>
Set the frame rate
</summary>
</member>
<member name="M:Emgu.CV.UI.ImageProperty.Dispose(System.Boolean)">
<summary>
Clean up any resources being used.
</summary>
<param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
</member>
<member name="F:Emgu.CV.UI.ImageProperty.components">
<summary>
Required designer variable.
</summary>
</member>
<member name="M:Emgu.CV.UI.ImageProperty.InitializeComponent">
<summary>
Required method for Designer support - do not modify
the contents of this method with the code editor.
</summary>
</member>
<member name="T:Emgu.CV.UI.ImageViewer">
<summary>
The Image viewer that display IImage
</summary>
</member>
<member name="M:Emgu.CV.UI.ImageViewer.#ctor">
<summary>
Create an ImageViewer
</summary>
</member>
<member name="M:Emgu.CV.UI.ImageViewer.#ctor(Emgu.CV.IInputArray)">
<summary>
Create an ImageViewer from the specific <paramref name="image"/>
</summary>
<param name="image">The image to be displayed in this viewer</param>
</member>
<member name="M:Emgu.CV.UI.ImageViewer.#ctor(Emgu.CV.IInputArray,System.String)">
<summary>
Create an ImageViewer from the specific <paramref name="image"/>, using <paramref name="imageName"/> as window name
</summary>
<param name="image">The image to be displayed</param>
<param name="imageName">The name of the image</param>
</member>
<member name="P:Emgu.CV.UI.ImageViewer.Image">
<summary>
Get or Set the image in this ImageViewer
</summary>
</member>
<member name="P:Emgu.CV.UI.ImageViewer.ImageBox">
<summary>
Get the image box hosted in this viewer
</summary>
</member>
<member name="M:Emgu.CV.UI.ImageViewer.Show(Emgu.CV.IInputArray)">
<summary>
Create a ImageViewer with the specific image and show it.
</summary>
<param name="image">The image to be displayed in ImageViewer</param>
</member>
<member name="M:Emgu.CV.UI.ImageViewer.Show(Emgu.CV.IInputArray,System.String)">
<summary>
Create a ImageViewer with the specific image and show it.
</summary>
<param name="image">The image to be displayed in ImageViewer</param>
<param name="windowName">The name of the window</param>
</member>
<member name="F:Emgu.CV.UI.ImageViewer.components">
<summary>
Required designer variable.
</summary>
</member>
<member name="M:Emgu.CV.UI.ImageViewer.Dispose(System.Boolean)">
<summary>
Clean up any resources being used.
</summary>
<param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
</member>
<member name="M:Emgu.CV.UI.ImageViewer.InitializeComponent">
<summary>
Required method for Designer support - do not modify
the contents of this method with the code editor.
</summary>
</member>
<member name="T:Emgu.CV.UI.MatrixBox">
<summary>
A control that is used to visualize a matrix
</summary>
</member>
<member name="M:Emgu.CV.UI.MatrixBox.#ctor">
<summary>
Create a MatrixBox
</summary>
</member>
<member name="P:Emgu.CV.UI.MatrixBox.Matrix">
<summary>
Get or Set the Matrix&lt;TDepth&gt; object; of this MatrixBox
</summary>
</member>
<member name="F:Emgu.CV.UI.MatrixBox.components">
<summary>
Required designer variable.
</summary>
</member>
<member name="M:Emgu.CV.UI.MatrixBox.Dispose(System.Boolean)">
<summary>
Clean up any resources being used.
</summary>
<param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
</member>
<member name="M:Emgu.CV.UI.MatrixBox.InitializeComponent">
<summary>
Required method for Designer support - do not modify
the contents of this method with the code editor.
</summary>
</member>
<member name="T:Emgu.CV.UI.MatrixViewer">
<summary>
A MatrixViewer that is used to visualize a matrix
</summary>
</member>
<member name="M:Emgu.CV.UI.MatrixViewer.#ctor">
<summary>
Create a MatrixViewer
</summary>
</member>
<member name="P:Emgu.CV.UI.MatrixViewer.Matrix">
<summary>
Get or Set the Matrix&lt;&gt; object; for this MatrixViewer
</summary>
</member>
<member name="F:Emgu.CV.UI.MatrixViewer.components">
<summary>
Required designer variable.
</summary>
</member>
<member name="M:Emgu.CV.UI.MatrixViewer.Dispose(System.Boolean)">
<summary>
Clean up any resources being used.
</summary>
<param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
</member>
<member name="M:Emgu.CV.UI.MatrixViewer.InitializeComponent">
<summary>
Required method for Designer support - do not modify
the contents of this method with the code editor.
</summary>
</member>
<member name="T:Emgu.CV.UI.Operation">
<summary>
An operation contains the MethodInfo and the methods parameters. It provides a way to invoke a specific method with the specific parameters.
</summary>
</member>
<member name="P:Emgu.CV.UI.Operation.Method">
<summary>
The MethodInfo
</summary>
</member>
<member name="P:Emgu.CV.UI.Operation.Parameters">
<summary>
The parameters for this method
</summary>
</member>
<member name="M:Emgu.CV.UI.Operation.#ctor(System.Reflection.MethodInfo,System.Object[])">
<summary>
Create an operation using the specific method and parameters
</summary>
<param name="mi">The method info</param>
<param name="parameters">The parameters for this method</param>
</member>
<member name="M:Emgu.CV.UI.Operation.InvokeMethod(System.Object)">
<summary>
Call the specific method with the specific parameters on the provided <paramref name="instance"/>
</summary>
<param name="instance">The instance to call the method</param>
<returns></returns>
</member>
<member name="M:Emgu.CV.UI.Operation.ToString">
<summary>
Represent this operation as a string
</summary>
<returns></returns>
</member>
<member name="M:Emgu.CV.UI.Operation.ToCode(Emgu.Util.TypeEnum.ProgrammingLanguage)">
<summary>
Represent this operation as code
</summary>
<returns>The source code</returns>
</member>
<member name="T:Emgu.CV.UI.OperationsView">
<summary>
A user control to display the operations
</summary>
</member>
<member name="M:Emgu.CV.UI.OperationsView.#ctor">
<summary>
Constructor
</summary>
</member>
<member name="P:Emgu.CV.UI.OperationsView.Language">
<summary>
Set the programming language for this Operation View
</summary>
</member>
<member name="M:Emgu.CV.UI.OperationsView.DisplayOperations(System.Collections.Generic.List{Emgu.CV.UI.Operation})">
<summary>
Display the operations
</summary>
<param name="operations">The operations to be displayed</param>
</member>
<member name="F:Emgu.CV.UI.OperationsView.components">
<summary>
Required designer variable.
</summary>
</member>
<member name="M:Emgu.CV.UI.OperationsView.Dispose(System.Boolean)">
<summary>
Clean up any resources being used.
</summary>
<param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
</member>
<member name="M:Emgu.CV.UI.OperationsView.InitializeComponent">
<summary>
Required method for Designer support - do not modify
the contents of this method with the code editor.
</summary>
</member>
<member name="T:Emgu.CV.UI.PanAndZoomPictureBox">
<summary>
A picture box with pan and zoom functionality
</summary>
</member>
<member name="F:Emgu.CV.UI.PanAndZoomPictureBox._zoomScale">
<summary>
The zoom scale of the image to be displayed
</summary>
</member>
<member name="F:Emgu.CV.UI.PanAndZoomPictureBox.ZoomLevels">
<summary>
The available zoom levels for the displayed image
</summary>
</member>
<member name="M:Emgu.CV.UI.PanAndZoomPictureBox.#ctor">
<summary>
Create a picture box with pan and zoom functionality
</summary>
</member>
<member name="P:Emgu.CV.UI.PanAndZoomPictureBox.PanableAndZoomable">
<summary>
Get or Set the property to enable(disable) Pan and Zoom
</summary>
</member>
<member name="E:Emgu.CV.UI.PanAndZoomPictureBox.OnZoomScaleChange">
<summary>
The event to fire when the zoom scale is changed
</summary>
</member>
<member name="P:Emgu.CV.UI.PanAndZoomPictureBox.InterpolationMode">
<summary>
Get or Set the interpolation mode for zooming operation
</summary>
</member>
<member name="M:Emgu.CV.UI.PanAndZoomPictureBox.OnPaint(System.Windows.Forms.PaintEventArgs)">
<summary>
Paint the image
</summary>
<param name="pe">The paint event</param>
</member>
<member name="P:Emgu.CV.UI.PanAndZoomPictureBox.HorizontalScrollBar">
<summary>
Get the horizontal scroll bar from this control
</summary>
</member>
<member name="P:Emgu.CV.UI.PanAndZoomPictureBox.VerticalScrollBar">
<summary>
Get the vertical scroll bar of this control
</summary>
</member>
<member name="M:Emgu.CV.UI.PanAndZoomPictureBox.OnMouseMove(System.Object,System.Windows.Forms.MouseEventArgs)">
<summary>
Used for tracking the mouse position on the image
</summary>
<param name="sender"></param>
<param name="e"></param>
</member>
<member name="M:Emgu.CV.UI.PanAndZoomPictureBox.GetViewSize">
<summary>
Get the size of the view area
</summary>
<returns>The size of the view area</returns>
</member>
<member name="M:Emgu.CV.UI.PanAndZoomPictureBox.GetImageSize">
<summary>
Get the size of the image
</summary>
<returns>The size of the image</returns>
</member>
<member name="M:Emgu.CV.UI.PanAndZoomPictureBox.Min(System.Drawing.Size,System.Drawing.Size)">
<summary>
Get the minimum of the two sizes
</summary>
<param name="s1">The first size</param>
<param name="s2">The second size</param>
<returns>The minimum of the two sizes</returns>
</member>
<member name="M:Emgu.CV.UI.PanAndZoomPictureBox.DrawReversibleRectangle(System.Drawing.Rectangle)">
<summary>
Draw a reversible rectangle on the control.
</summary>
<param name="rect">The rectangle using the control's coordinate system</param>
</member>
<member name="M:Emgu.CV.UI.PanAndZoomPictureBox.GetRectangle(System.Drawing.Point,System.Drawing.Point)">
<summary>
Get the rectangle defined by the two points on the control
</summary>
<param name="p1">The first point on the control</param>
<param name="p2">The second point on the control</param>
<returns>the rectangle defined by the two points</returns>
</member>
<member name="P:Emgu.CV.UI.PanAndZoomPictureBox.ZoomScale">
<summary>
Get or Set the zoom scale
</summary>
</member>
<member name="M:Emgu.CV.UI.PanAndZoomPictureBox.SetZoomScale(System.Double,System.Drawing.Point)">
<summary>
Set the new zoom scale for the displayed image
</summary>
<param name="zoomScale">The new zoom scale</param>
<param name="fixPoint">The point to be fixed, in display coordinate</param>
</member>
<member name="T:Emgu.CV.UI.ParameterInputDialog">
<summary>
The dialog to ask user for parameters to the specific method
</summary>
</member>
<member name="F:Emgu.CV.UI.ParameterInputDialog._paramValue">
<summary>
The List of parameter values
</summary>
</member>
<member name="F:Emgu.CV.UI.ParameterInputDialog._paramInfo">
<summary>
The array of parameter info
</summary>
</member>
<member name="P:Emgu.CV.UI.ParameterInputDialog.Parameters">
<summary>
Get the parameters obtained by this parameter input dialog
</summary>
</member>
<member name="M:Emgu.CV.UI.ParameterInputDialog.ParamInputPanel.GetValue">
<summary>
Return the value of the parameter input panel, if unable to retrieve value, return null
</summary>
<returns>The value of the parameter input panel, if unable to retrieve value, return null</returns>
</member>
<member name="P:Emgu.CV.UI.ParameterInputDialog.ParamInputPanel.GetParamFunction">
<summary>
The function used to obtain the parameter from this input panel
</summary>
</member>
<member name="M:Emgu.CV.UI.ParameterInputDialog.ParseParameterName(System.Reflection.ParameterInfo)">
<summary>
Get the name of the parameter
</summary>
<param name="param">the parameter</param>
<returns>the name of the parameter</returns>
</member>
<member name="M:Emgu.CV.UI.ParameterInputDialog.CreatePanelForParameter(System.Reflection.ParameterInfo,System.Object)">
<summary>
Create a panel for the specific parameter
</summary>
<param name="param">the parameter to create panel for</param>
<param name="defaultValue">The default value for the parameter</param>
<returns>the panel</returns>
</member>
<member name="M:Emgu.CV.UI.ParameterInputDialog.GetParams(System.Reflection.MethodInfo,System.Object[])">
<summary>
Obtain the parameters for <paramref name="method"/> and put them in <paramref name="defaultParameterValues"/>
</summary>
<param name="method">The method to Obtain parameters from</param>
<param name="defaultParameterValues">The list that will be used as the storage for the retrieved parameters, if it contains elements, those elements will be used as default value</param>
<returns>True if successed, false otherwise</returns>
</member>
<member name="F:Emgu.CV.UI.ParameterInputDialog.components">
<summary>
Required designer variable.
</summary>
</member>
<member name="M:Emgu.CV.UI.ParameterInputDialog.Dispose(System.Boolean)">
<summary>
Clean up any resources being used.
</summary>
<param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
</member>
<member name="M:Emgu.CV.UI.ParameterInputDialog.InitializeComponent">
<summary>
Required method for Designer support - do not modify
the contents of this method with the code editor.
</summary>
</member>
<member name="T:Emgu.CV.UI.Properties.StringTable">
<summary>
A strongly-typed resource class, for looking up localized strings, etc.
</summary>
</member>
<member name="P:Emgu.CV.UI.Properties.StringTable.ResourceManager">
<summary>
Returns the cached ResourceManager instance used by this class.
</summary>
</member>
<member name="P:Emgu.CV.UI.Properties.StringTable.Culture">
<summary>
Overrides the current thread's CurrentUICulture property for all
resource lookups using this strongly typed resource class.
</summary>
</member>
<member name="P:Emgu.CV.UI.Properties.StringTable.Cancel">
<summary>
Looks up a localized string similar to Cancel.
</summary>
</member>
<member name="P:Emgu.CV.UI.Properties.StringTable.Count">
<summary>
Looks up a localized string similar to Count.
</summary>
</member>
<member name="P:Emgu.CV.UI.Properties.StringTable.DefaultHistogramTitle">
<summary>
Looks up a localized string similar to Histogram.
</summary>
</member>
<member name="P:Emgu.CV.UI.Properties.StringTable.File">
<summary>
Looks up a localized string similar to File.
</summary>
</member>
<member name="P:Emgu.CV.UI.Properties.StringTable.Filters">
<summary>
Looks up a localized string similar to Filters.
</summary>
</member>
<member name="P:Emgu.CV.UI.Properties.StringTable.LoadImage">
<summary>
Looks up a localized string similar to Load Image....
</summary>
</member>
<member name="P:Emgu.CV.UI.Properties.StringTable.OK">
<summary>
Looks up a localized string similar to OK.
</summary>
</member>
<member name="P:Emgu.CV.UI.Properties.StringTable.Only1DHistogramSupported">
<summary>
Looks up a localized string similar to Only 1D histogram is supported.
</summary>
</member>
<member name="P:Emgu.CV.UI.Properties.StringTable.ParameterIsInvalid">
<summary>
Looks up a localized string similar to Parameter {0} is invalid..
</summary>
</member>
<member name="P:Emgu.CV.UI.Properties.StringTable.ParameterTypeIsNotSupported">
<summary>
Looks up a localized string similar to Parameter type &apos;{0}&apos; is not supported.
</summary>
</member>
<member name="P:Emgu.CV.UI.Properties.StringTable.PleaseLoadAnImageFirst">
<summary>
Looks up a localized string similar to Please load an image first.
</summary>
</member>
<member name="P:Emgu.CV.UI.Properties.StringTable.Property">
<summary>
Looks up a localized string similar to Property.
</summary>
</member>
<member name="P:Emgu.CV.UI.Properties.StringTable.SaveAs">
<summary>
Looks up a localized string similar to Save As....
</summary>
</member>
<member name="P:Emgu.CV.UI.Properties.StringTable.SaveImageDialogText">
<summary>
Looks up a localized string similar to File Saving.
</summary>
</member>
<member name="P:Emgu.CV.UI.Properties.StringTable.Unknown">
<summary>
Looks up a localized string similar to Unknown.
</summary>
</member>
<member name="P:Emgu.CV.UI.Properties.StringTable.UnZoom">
<summary>
Looks up a localized string similar to Un-Zoom.
</summary>
</member>
<member name="P:Emgu.CV.UI.Properties.StringTable.Value">
<summary>
Looks up a localized string similar to Value.
</summary>
</member>
<member name="P:Emgu.CV.UI.Properties.StringTable.Zoom">
<summary>
Looks up a localized string similar to Zoom.
</summary>
</member>
<member name="P:Emgu.CV.UI.Properties.StringTable.ZoomIn">
<summary>
Looks up a localized string similar to Zoom In.
</summary>
</member>
<member name="P:Emgu.CV.UI.Properties.StringTable.ZoomOut">
<summary>
Looks up a localized string similar to Zoom Out.
</summary>
</member>
<member name="T:Emgu.CV.UI.ImagePropertyDialog">
<summary>
A dialog to display the property of an image
</summary>
</member>
<member name="M:Emgu.CV.UI.ImagePropertyDialog.#ctor(Emgu.CV.UI.ImageBox)">
<summary>
Constructor
</summary>
</member>
<member name="P:Emgu.CV.UI.ImagePropertyDialog.ImagePropertyControl">
<summary>
Get the image property panel
</summary>
</member>
<member name="F:Emgu.CV.UI.ImagePropertyDialog.components">
<summary>
Required designer variable.
</summary>
</member>
<member name="M:Emgu.CV.UI.ImagePropertyDialog.Dispose(System.Boolean)">
<summary>
Clean up any resources being used.
</summary>
<param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
</member>
<member name="M:Emgu.CV.UI.ImagePropertyDialog.InitializeComponent">
<summary>
Required method for Designer support - do not modify
the contents of this method with the code editor.
</summary>
</member>
</members>
</doc>

Binary file not shown.

File diff suppressed because it is too large Load Diff

View File

@ -7,8 +7,7 @@ namespace WebApplication5.Models.Business
{
public class TemplateAnswer
{
public string Identifier { get; set; }
public string StudendGUID { get; set; }
public int QuestionId { get; set; }
public List<SimpleAnswer> Answers { get; set; }
}
}

View File

@ -8,6 +8,6 @@ namespace WebApplication5.Models.Business
public class SimpleAnswer
{
public int AnswerNumber { get; set; }
public int CheckBoxNumber { get; set; }
public bool Checked { get; set; }
}
}

View File

@ -3,37 +3,229 @@ using System.Collections.Generic;
using System.Linq;
using System.Web;
using WebApplication5.Models.Business;
using Emgu.CV;
using Emgu.Util;
using Emgu.CV.Structure;
using System.IO;
using ImageMagick;
using System.Drawing;
namespace WebApplication5.Templates
{
public class CheckCards
{
//inject db
public CheckCards()
private TestsDbContext _db;
public CheckCards(TestsDbContext db)
{
_db = db;
}
public List<TemplateAnswer> LoadAnswersPdf()
public void CheckFolder(string folder)
{
var list = new List<TemplateAnswer>();
string[] fileEntries = Directory.GetFiles(@"C:\Users\Janek\Desktop\Tests\scans");
while (false) //while pdf not ended
foreach (string fileName in fileEntries.Where(f => f.EndsWith(".pdf")))
{
//read page
var studentAns = new TemplateAnswer();
//Extract identifier
//Extract student info
//ExtractAnswers
}
var answers = ProcessFile(fileName);
var questions = _db.Questions.Include("Answers").Where(q => answers.Select(a => a.QuestionId).Contains(q.Id)).ToList();
return list;
var points = 0;
var maxPoints = questions.Sum(q => q.DefaultScore);
foreach (var q in questions)
{
var ta = answers.First(a => a.QuestionId == q.Id).Answers.Where(a => a.Checked).Select(a => a.AnswerNumber);
var minId = q.Answers.Min(a => a.Id);
var correctRelativeAnswers = q.Answers.Where(a => a.IsCorrect).Select(a => a.Id - minId + 1);
points += q.DefaultScore;
}
}
}
public void AssignPointsToStudent(TemplateAnswer answers)
private List<TemplateAnswer> ProcessFile(string fileName)
{
//load template for guid in answer
//check number of valid answers
//assign score
fileName = PDFtoIMG(fileName);
var greyThresh = ImgToGray(fileName);
var qrCode = HandleQRCodeAndRotation(greyThresh);
greyThresh.ThresholdBinary(new Gray(1), new Gray(255));
var questionsIds = qrCode.Split('_').Select(i => int.Parse(i));
var numbOfQuestions = questionsIds.Count();
var lcolumn = numbOfQuestions - (numbOfQuestions / 2);
var lcolumnq = questionsIds.Take(lcolumn).ToList();
var rcolumnq = questionsIds.Skip(lcolumn).ToList();
var widthl = _db.Questions.Where(q => lcolumnq.Contains(q.Id)).Max(q => q.Answers.Count);
var widthr = _db.Questions.Where(q => rcolumnq.Contains(q.Id)).Max(q => q.Answers.Count);
var ans1 = GetAnswers(greyThresh, lcolumnq, false, 480, widthl);
var ans2 = GetAnswers(greyThresh, rcolumnq, true, 480, widthr);
return ans1.Concat(ans2).ToList();
}
private int GetHeight(LineSegment2D[] lines, int questionNumbers)
{
return Math.Abs(GetTopLine(lines) - GetBottomLine(lines)) / questionNumbers;
}
private double LineAvg(LineSegment2D[] lines)
{
return lines.Average(l => Math.Min(l.P2.Y, l.P1.Y));
}
private int GetTopLine(LineSegment2D[] lines)
{
return lines.Min(l => Math.Min(l.P2.Y, l.P1.Y));
}
private int GetBottomLine(LineSegment2D[] lines)
{
return lines.Max(l => Math.Max(l.P2.Y, l.P1.Y));
}
private int GetLeftLine(LineSegment2D[] lines)
{
return lines.Min(l => Math.Min(l.P2.X, l.P1.X));
}
private int GetRightLine(LineSegment2D[] lines)
{
return lines.Max(l => Math.Max(l.P2.X, l.P1.X));
}
private List<TemplateAnswer> GetAnswers(Image<Gray, byte> image, List<int> questionsIds, bool rightcolumn, int idetiferHeight, int ansNumber)
{
var result = new List<TemplateAnswer>();
image.ROI = new Rectangle();
if (rightcolumn)
image.ROI = new Rectangle(image.Size.Width / 2, idetiferHeight, image.Size.Width / 2, image.Size.Height - idetiferHeight);
else
image.ROI = new Rectangle(0, idetiferHeight, image.Size.Width / 2, image.Size.Height- idetiferHeight);
image.Save(@"C:\Users\Janek\Desktop\Tests\scans\half_" + rightcolumn + ".jpg");
var lines = GetHorizontal(image);
var left = GetLeftLine(lines);
var right = GetRightLine(lines);
var top = GetTopLine(lines);
var height = GetHeight(lines, questionsIds.Count);
var widthPerAnswer = (right - left) / ansNumber;
image.ROI = new Rectangle();
var rec = new Rectangle(rightcolumn ? image.Size.Width / 2 + left : left, idetiferHeight + top, right - left, height * questionsIds.Count);
image.Draw(rec, new Gray(255), 10);
image.Save(@"C:\Users\Janek\Desktop\Tests\scans\" + rightcolumn + "lines.jpg");
for (int i = 0; i < questionsIds.Count; i++)
{
var xStart = left;
if (rightcolumn)
{
image.ROI = new Rectangle();
xStart = xStart + image.Size.Width / 2;
}
var qA = new TemplateAnswer()
{
QuestionId = questionsIds.ElementAt(i),
Answers = new List<SimpleAnswer>()
};
for (int j = 0; j < ansNumber; j++)
{
var a = new SimpleAnswer()
{
AnswerNumber = j,
Checked = false
};
var recc = new Rectangle(xStart, idetiferHeight + top + height * i, widthPerAnswer, height);
xStart = xStart + widthPerAnswer;
image.ROI = recc;
var pixels = (float)image.ROI.Size.Height * image.ROI.Width;
var nonZero = (float)image.CountNonzero()[0];
if ((pixels - nonZero) / pixels > 0.5)
a.Checked = true;
image.Save(@"C:\Users\Janek\Desktop\Tests\scans\" + rightcolumn + i + j + ".jpg");
}
result.Add(qA);
}
return result;
}
public LineSegment2D[] GetHorizontal(Image<Gray, byte> image)
{
var lines = image.HoughLines(200, 100, 1, Math.PI / 90, 50, 50, 10)[0]
.Where(l => l.Direction.X != 0 && l.Direction.Y == 0).ToArray();
var avg = LineAvg(lines);
var topLine = GetTopLine(lines);
var avgDist = avg - topLine;
lines = lines.Where(l => Math.Max(l.P1.Y, l.P2.Y) < (2 * avgDist) + topLine)
.ToArray();
return lines;
}
private Image<Gray, byte> ImgToGray(string fileName)
{
Image<Bgr, byte> answersCard = new Image<Bgr, byte>(fileName);
Image<Gray, byte> grayImage = answersCard.Convert<Gray, byte>();
var grayMin = grayImage.ThresholdToZero(new Gray(150));
return grayMin;
}
private string HandleQRCodeAndRotation(Image<Gray, byte> image)
{
var qrDetector = new QRCodeDetector();
Mat x = new Mat();
Mat y = new Mat();
qrDetector.Detect(image, x);
return qrDetector.Decode(image, x, y);
}
public void CheckRotation(Image<Gray, byte> image, Mat square)
{
double x = 0, y = 0;
var arr = square.GetData();
for (int i = 0; i < 4; i++)
{
x += x + (double)arr.GetValue(2 * i);
}
for (int i = 0; i < 4; i++)
{
y += y + (double)arr.GetValue(2 * i + 1);
}
x = x / 4;
y = y / 4;
var xMax = image.Size.Width;
var yMax = image.Size.Height;
var distanceFromCorners = new List<int>();
var left = Math.Abs(xMax - x);
image.Rotate(180, new Gray(0));
}
private string PDFtoIMG(string fileName)
{
var settings = new MagickReadSettings();
// Settings the density to 300 dpi will create an image with a better quality
settings.Density = new Density(300);
using (var images = new MagickImageCollection())
{
// Add all the pages of the pdf file to the collection
images.Read(fileName, settings);
fileName = fileName.Replace(".pdf", ".jpg");
using (var horizontal = images.AppendHorizontally())
{
horizontal.Write(fileName);
}
}
return fileName;
}
}
}

View File

@ -156,6 +156,14 @@
<assemblyIdentity name="System.ValueTuple" publicKeyToken="cc7b13ffcd2ddd51" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.0.3.0" newVersion="4.0.3.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="FSharp.Core" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-4.6.0.0" newVersion="4.6.0.0" />
</dependentAssembly>
<dependentAssembly>
<assemblyIdentity name="System.Interactive.Async" publicKeyToken="94bc3704cddfc263" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-3.2.0.0" newVersion="3.2.0.0" />
</dependentAssembly>
</assemblyBinding>
</runtime>
<entityFramework>

View File

@ -51,9 +51,27 @@
<Reference Include="AutoMapper.Extensions.Microsoft.DependencyInjection, Version=0.0.0.0, Culture=neutral, PublicKeyToken=e767ac9c89543656, processorArchitecture=MSIL">
<HintPath>..\packages\AutoMapper.Extensions.Microsoft.DependencyInjection.7.0.0\lib\netstandard2.0\AutoMapper.Extensions.Microsoft.DependencyInjection.dll</HintPath>
</Reference>
<Reference Include="Emgu.CV.Platform.NetFramework, Version=4.3.0.3890, Culture=neutral, PublicKeyToken=7281126722ab4438, processorArchitecture=MSIL">
<HintPath>..\packages\Emgu.CV.4.3.0.3890\lib\net461\Emgu.CV.Platform.NetFramework.dll</HintPath>
</Reference>
<Reference Include="Emgu.CV.Platform.NetStandard, Version=4.3.0.3890, Culture=neutral, PublicKeyToken=7281126722ab4438, processorArchitecture=MSIL">
<HintPath>..\packages\Emgu.CV.4.3.0.3890\lib\net461\Emgu.CV.Platform.NetStandard.dll</HintPath>
</Reference>
<Reference Include="FSharp.Control.AsyncSeq, Version=2.0.21.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\FSharp.Control.AsyncSeq.2.0.21\lib\net45\FSharp.Control.AsyncSeq.dll</HintPath>
</Reference>
<Reference Include="FSharp.Core, Version=4.6.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\FSharp.Core.4.6.2\lib\net45\FSharp.Core.dll</HintPath>
</Reference>
<Reference Include="itextsharp, Version=5.5.13.1, Culture=neutral, PublicKeyToken=8354ae6d2174ddca, processorArchitecture=MSIL">
<HintPath>..\packages\iTextSharp.5.5.13.1\lib\itextsharp.dll</HintPath>
</Reference>
<Reference Include="Magick.NET-Q16-AnyCPU, Version=7.19.0.0, Culture=neutral, PublicKeyToken=2004825badfa91ec, processorArchitecture=MSIL">
<HintPath>..\packages\Magick.NET-Q16-AnyCPU.7.19.0.1\lib\net40\Magick.NET-Q16-AnyCPU.dll</HintPath>
</Reference>
<Reference Include="Magick.NET.Core, Version=2.0.0.0, Culture=neutral, PublicKeyToken=2004825badfa91ec, processorArchitecture=MSIL">
<HintPath>..\packages\Magick.NET.Core.2.0.0\lib\net40\Magick.NET.Core.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Bcl.AsyncInterfaces, Version=1.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Bcl.AsyncInterfaces.1.1.0\lib\net461\Microsoft.Bcl.AsyncInterfaces.dll</HintPath>
</Reference>
@ -100,6 +118,9 @@
<Reference Include="Microsoft.Extensions.FileSystemGlobbing, Version=3.1.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Extensions.FileSystemGlobbing.3.1.0\lib\netstandard2.0\Microsoft.Extensions.FileSystemGlobbing.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Extensions.Http, Version=2.2.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Extensions.Http.2.2.0\lib\netstandard2.0\Microsoft.Extensions.Http.dll</HintPath>
</Reference>
<Reference Include="Microsoft.Extensions.Logging, Version=3.1.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Extensions.Logging.3.1.0\lib\netstandard2.0\Microsoft.Extensions.Logging.dll</HintPath>
</Reference>
@ -112,6 +133,39 @@
<Reference Include="Microsoft.Extensions.Primitives, Version=3.1.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.Extensions.Primitives.3.1.0\lib\netstandard2.0\Microsoft.Extensions.Primitives.dll</HintPath>
</Reference>
<Reference Include="NCoreUtils.CaseInsensitive, Version=1.0.1.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\NCoreUtils.CaseInsensitive.1.0.1\lib\net452\NCoreUtils.CaseInsensitive.dll</HintPath>
</Reference>
<Reference Include="NCoreUtils.FSharp, Version=2.1.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\NCoreUtils.FSharp.2.1.0\lib\net452\NCoreUtils.FSharp.dll</HintPath>
</Reference>
<Reference Include="NCoreUtils.FSharp.DependencyInjection, Version=2.1.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\NCoreUtils.FSharp.DependencyInjection.2.1.0\lib\netstandard2.0\NCoreUtils.FSharp.DependencyInjection.dll</HintPath>
</Reference>
<Reference Include="NCoreUtils.Images, Version=2.2.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\NCoreUtils.Images.2.2.0\lib\netstandard2.0\NCoreUtils.Images.dll</HintPath>
</Reference>
<Reference Include="NCoreUtils.Images.Abstractions, Version=2.2.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\NCoreUtils.Images.Abstractions.2.2.0\lib\net452\NCoreUtils.Images.Abstractions.dll</HintPath>
</Reference>
<Reference Include="NCoreUtils.Images.Core, Version=2.2.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\NCoreUtils.Images.Core.2.2.0\lib\net452\NCoreUtils.Images.Core.dll</HintPath>
</Reference>
<Reference Include="NCoreUtils.Images.DependencyInjection, Version=2.2.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\NCoreUtils.Images.DependencyInjection.2.2.0\lib\netstandard2.0\NCoreUtils.Images.DependencyInjection.dll</HintPath>
</Reference>
<Reference Include="NCoreUtils.IO, Version=2.1.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\NCoreUtils.IO.2.1.0\lib\net452\NCoreUtils.IO.dll</HintPath>
</Reference>
<Reference Include="NCoreUtils.IO.Abstractions, Version=2.1.0.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\NCoreUtils.IO.Abstractions.2.1.0\lib\net452\NCoreUtils.IO.Abstractions.dll</HintPath>
</Reference>
<Reference Include="NCoreUtils.Linq, Version=1.0.5.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\NCoreUtils.Linq.1.0.5\lib\net452\NCoreUtils.Linq.dll</HintPath>
</Reference>
<Reference Include="NCoreUtils.Linq.Abstractions, Version=1.0.1.0, Culture=neutral, processorArchitecture=MSIL">
<HintPath>..\packages\NCoreUtils.Linq.Abstractions.1.0.1\lib\net452\NCoreUtils.Linq.Abstractions.dll</HintPath>
</Reference>
<Reference Include="Newtonsoft.Json, Version=11.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed, processorArchitecture=MSIL">
<HintPath>..\packages\Newtonsoft.Json.11.0.2\lib\net45\Newtonsoft.Json.dll</HintPath>
</Reference>
@ -131,6 +185,7 @@
<Reference Include="System.ComponentModel.Annotations, Version=4.2.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.ComponentModel.Annotations.4.7.0\lib\net461\System.ComponentModel.Annotations.dll</HintPath>
</Reference>
<Reference Include="System.ComponentModel.Composition" />
<Reference Include="System.Data" />
<Reference Include="System.Data.SqlClient, Version=4.5.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Data.SqlClient.4.6.0\lib\net461\System.Data.SqlClient.dll</HintPath>
@ -142,9 +197,19 @@
<Reference Include="System.Interactive.Async, Version=3.2.0.0, Culture=neutral, PublicKeyToken=94bc3704cddfc263, processorArchitecture=MSIL">
<HintPath>..\packages\System.Interactive.Async.3.2.0\lib\net46\System.Interactive.Async.dll</HintPath>
</Reference>
<Reference Include="System.IO, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.IO.4.3.0\lib\net462\System.IO.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Memory, Version=4.0.1.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Memory.4.5.3\lib\netstandard2.0\System.Memory.dll</HintPath>
</Reference>
<Reference Include="System.Net.Http, Version=4.1.1.3, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Net.Http.4.3.4\lib\net46\System.Net.Http.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Net.Http.Formatting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>..\packages\Microsoft.AspNet.WebApi.Client.4.0.20710.0\lib\net40\System.Net.Http.Formatting.dll</HintPath>
</Reference>
@ -152,9 +217,34 @@
<Reference Include="System.Numerics.Vectors, Version=4.1.4.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Numerics.Vectors.4.5.0\lib\net46\System.Numerics.Vectors.dll</HintPath>
</Reference>
<Reference Include="System.Runtime, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.4.3.0\lib\net462\System.Runtime.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Runtime.CompilerServices.Unsafe, Version=4.0.6.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Runtime.CompilerServices.Unsafe.4.7.0\lib\netstandard2.0\System.Runtime.CompilerServices.Unsafe.dll</HintPath>
</Reference>
<Reference Include="System.Security.Cryptography.Algorithms, Version=4.2.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Security.Cryptography.Algorithms.4.3.0\lib\net463\System.Security.Cryptography.Algorithms.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Security.Cryptography.Encoding, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Security.Cryptography.Encoding.4.3.0\lib\net46\System.Security.Cryptography.Encoding.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Security.Cryptography.Primitives, Version=4.0.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Security.Cryptography.Primitives.4.3.0\lib\net46\System.Security.Cryptography.Primitives.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Security.Cryptography.X509Certificates, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
<HintPath>..\packages\System.Security.Cryptography.X509Certificates.4.3.0\lib\net461\System.Security.Cryptography.X509Certificates.dll</HintPath>
<Private>True</Private>
<Private>True</Private>
</Reference>
<Reference Include="System.Text.Encodings.Web, Version=4.0.5.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
<HintPath>..\packages\System.Text.Encodings.Web.4.7.0\lib\netstandard2.0\System.Text.Encodings.Web.dll</HintPath>
</Reference>
@ -192,8 +282,6 @@
<Private>True</Private>
<HintPath>..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll</HintPath>
</Reference>
<Reference Include="System.Net.Http">
</Reference>
<Reference Include="System.Net.Http.WebRequest">
</Reference>
<Reference Include="System.Web.Helpers, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
@ -326,6 +414,18 @@
<Content Include="Content\bootstrap-theme.min.css" />
<Content Include="Content\bootstrap.css" />
<Content Include="Content\bootstrap.min.css" />
<Content Include="Emgu.CV.Platform.NetFramework.dll">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="Emgu.CV.Platform.NetFramework.xml">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="Emgu.CV.Platform.NetStandard.dll">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="Emgu.CV.Platform.NetStandard.xml">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Include="favicon.ico" />
<Content Include="fonts\glyphicons-halflings-regular.svg" />
<Content Include="Global.asax" />
@ -432,7 +532,9 @@
<ErrorText>This project references NuGet package(s) that are missing on this computer. Use NuGet Package Restore to download them. For more information, see http://go.microsoft.com/fwlink/?LinkID=322105. The missing file is {0}.</ErrorText>
</PropertyGroup>
<Error Condition="!Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.0\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.2.0.0\build\net46\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props'))" />
<Error Condition="!Exists('..\packages\Emgu.CV.runtime.windows.4.3.0.3890\build\Emgu.CV.runtime.windows.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\Emgu.CV.runtime.windows.4.3.0.3890\build\Emgu.CV.runtime.windows.targets'))" />
</Target>
<Import Project="..\packages\Emgu.CV.runtime.windows.4.3.0.3890\build\Emgu.CV.runtime.windows.targets" Condition="Exists('..\packages\Emgu.CV.runtime.windows.4.3.0.3890\build\Emgu.CV.runtime.windows.targets')" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">

View File

@ -4,10 +4,16 @@
<package id="AutoMapper" version="9.0.0" targetFramework="net472" />
<package id="AutoMapper.Extensions.Microsoft.DependencyInjection" version="7.0.0" targetFramework="net472" />
<package id="bootstrap" version="3.4.1" targetFramework="net472" />
<package id="Emgu.CV" version="4.3.0.3890" targetFramework="net472" />
<package id="Emgu.CV.runtime.windows" version="4.3.0.3890" targetFramework="net472" />
<package id="EntityFramework" version="6.2.0" targetFramework="net472" />
<package id="FSharp.Control.AsyncSeq" version="2.0.21" targetFramework="net472" />
<package id="FSharp.Core" version="4.6.2" targetFramework="net472" />
<package id="iTextSharp" version="5.5.13.1" targetFramework="net472" />
<package id="jQuery" version="3.3.1" targetFramework="net472" />
<package id="jQuery.Validation" version="1.17.0" targetFramework="net472" />
<package id="Magick.NET.Core" version="2.0.0" targetFramework="net472" />
<package id="Magick.NET-Q16-AnyCPU" version="7.19.0.1" targetFramework="net472" />
<package id="Microsoft.AspNet.Identity.Core" version="2.2.2" targetFramework="net472" />
<package id="Microsoft.AspNet.Identity.EntityFramework" version="2.2.2" targetFramework="net472" />
<package id="Microsoft.AspNet.Identity.Owin" version="2.2.2" targetFramework="net472" />
@ -35,12 +41,14 @@
<package id="Microsoft.Extensions.FileProviders.Abstractions" version="3.1.0" targetFramework="net472" />
<package id="Microsoft.Extensions.FileProviders.Physical" version="3.1.0" targetFramework="net472" />
<package id="Microsoft.Extensions.FileSystemGlobbing" version="3.1.0" targetFramework="net472" />
<package id="Microsoft.Extensions.Http" version="2.2.0" targetFramework="net472" />
<package id="Microsoft.Extensions.Logging" version="3.1.0" targetFramework="net472" />
<package id="Microsoft.Extensions.Logging.Abstractions" version="3.1.0" targetFramework="net472" />
<package id="Microsoft.Extensions.Options" version="3.1.0" targetFramework="net472" />
<package id="Microsoft.Extensions.Primitives" version="3.1.0" targetFramework="net472" />
<package id="Microsoft.jQuery.Unobtrusive.Validation" version="3.2.11" targetFramework="net472" />
<package id="Microsoft.Net.Http" version="2.0.20710.0" targetFramework="net472" />
<package id="Microsoft.NETCore.Platforms" version="2.2.0" targetFramework="net472" />
<package id="Microsoft.Owin" version="4.0.0" targetFramework="net472" />
<package id="Microsoft.Owin.Host.SystemWeb" version="4.0.0" targetFramework="net472" />
<package id="Microsoft.Owin.Security" version="4.0.0" targetFramework="net472" />
@ -52,6 +60,17 @@
<package id="Microsoft.Owin.Security.Twitter" version="4.0.0" targetFramework="net472" />
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net472" />
<package id="Modernizr" version="2.8.3" targetFramework="net472" />
<package id="NCoreUtils.CaseInsensitive" version="1.0.1" targetFramework="net472" />
<package id="NCoreUtils.FSharp" version="2.1.0" targetFramework="net472" />
<package id="NCoreUtils.FSharp.DependencyInjection" version="2.1.0" targetFramework="net472" />
<package id="NCoreUtils.Images" version="2.2.0" targetFramework="net472" />
<package id="NCoreUtils.Images.Abstractions" version="2.2.0" targetFramework="net472" />
<package id="NCoreUtils.Images.Core" version="2.2.0" targetFramework="net472" />
<package id="NCoreUtils.Images.DependencyInjection" version="2.2.0" targetFramework="net472" />
<package id="NCoreUtils.IO" version="2.1.0" targetFramework="net472" />
<package id="NCoreUtils.IO.Abstractions" version="2.1.0" targetFramework="net472" />
<package id="NCoreUtils.Linq" version="1.0.5" targetFramework="net472" />
<package id="NCoreUtils.Linq.Abstractions" version="1.0.1" targetFramework="net472" />
<package id="Newtonsoft.Json" version="11.0.2" targetFramework="net472" />
<package id="Owin" version="1.0" targetFramework="net472" />
<package id="Remotion.Linq" version="2.2.0" targetFramework="net472" />
@ -63,9 +82,16 @@
<package id="System.Data.SqlClient" version="4.6.0" targetFramework="net472" />
<package id="System.Diagnostics.DiagnosticSource" version="4.7.0" targetFramework="net472" />
<package id="System.Interactive.Async" version="3.2.0" targetFramework="net472" />
<package id="System.IO" version="4.3.0" targetFramework="net472" />
<package id="System.Memory" version="4.5.3" targetFramework="net472" />
<package id="System.Net.Http" version="4.3.4" targetFramework="net472" />
<package id="System.Numerics.Vectors" version="4.5.0" targetFramework="net472" />
<package id="System.Runtime" version="4.3.0" targetFramework="net472" />
<package id="System.Runtime.CompilerServices.Unsafe" version="4.7.0" targetFramework="net472" />
<package id="System.Security.Cryptography.Algorithms" version="4.3.0" targetFramework="net472" />
<package id="System.Security.Cryptography.Encoding" version="4.3.0" targetFramework="net472" />
<package id="System.Security.Cryptography.Primitives" version="4.3.0" targetFramework="net472" />
<package id="System.Security.Cryptography.X509Certificates" version="4.3.0" targetFramework="net472" />
<package id="System.Text.Encodings.Web" version="4.7.0" targetFramework="net472" />
<package id="System.Text.Json" version="4.7.0" targetFramework="net472" />
<package id="System.Threading.Tasks.Extensions" version="4.5.2" targetFramework="net472" />