私は matlab で顔のディクターを作成し、それを C# コードに変換しています。ほとんどすべてが完了しています。主に使っているのは
System.Drawing.Bitmap b = new
System.Drawing.Bitmap("C:*Location of file on computer*");
最初に画像を取得し、最終ステップでこのコードを持っています
public static void ratio(System.Drawing.Bitmap b, Dictionary<int, List<int>> map)
{
double height=0;
double width=0;
foreach (KeyValuePair<int, List<int>> place in map)
{
height = place.Value[2] - place.Value[3];
width = place.Value[0] - place.Value[1];
if( ((height/width) >= 1) && ((height/width) <= 2 ) )
draw(b, place, map);
}
}
public static void draw(System.Drawing.Bitmap bmp, KeyValuePair<int, List<int>> place, Dictionary<int, List<int>> map)
{
// Create pen.
Pen blackPen = new Pen(Color.Black, 3);
// Create coordinates of points that define line.
int x1 = place.Value[1]; //topleft to topright
int y1 = place.Value[3];
int x2 = place.Value[0];
int y2 = place.Value[3];
int x3 = place.Value[0]; //topright to bottomright
int y3 = place.Value[3];
int x4 = place.Value[0];
int y4 = place.Value[2];
int x5 = place.Value[0]; //bottomright to bottomleft
int y5 = place.Value[2];
int x6 = place.Value[1];
int y6 = place.Value[2];
int x7 = place.Value[1]; //bottomleft to topleft
int y7 = place.Value[2];
int x8 = place.Value[1];
int y8 = place.Value[3];
// Draw line to screen.
using (var graphics = Graphics.FromImage(bmp))
{
graphics.DrawLine(blackPen, x1, y1, x2, y2);
}
using (var graphics = Graphics.FromImage(bmp))
{
graphics.DrawLine(blackPen, x3, y3, x4, y4);
}
using (var graphics = Graphics.FromImage(bmp))
{
graphics.DrawLine(blackPen, x5, y5, x6, y6);
}
using (var graphics = Graphics.FromImage(bmp))
{
graphics.DrawLine(blackPen, x7, y7, x8, y8);
}
}
顔の周りにボックスを描きます。比率は、連結成分ラベリングから取得したラベルからの境界を使用して、人間の顔の適切な比率を見つけます (私の数値は作成されたものです) マップは、値として xmax、xmin、ymax、および ymin と共にラベル番号を含む辞書です。 . すべてがエラーなしでコンパイルされますが、私が今やろうとしているのは、顔の周りに描画されたボックスを使用して上記の画像を表示することです。その方法がわかりません