以下是我用于检测Kinect Feed中的面部然后将面部像素设置为新图像的方法的代码。 。它由一个由GestureFlag
完成的手势触发。我从Detect
类调用的FaceDetection
方法取自EMGU CV示例。
public string Detect(WriteableBitmap colorBitmap, int GestureFlag)
{
if(GestureFlag!=0)
{
List<Rectangle> faces = new List<Rectangle>();
Bitmap bitface = BitmapFromSource(colorBitmap);
Image<Bgr, Byte> image = new Image<Bgr, Byte>(bitface);
FaceDetection.Detect(image, "haarcascade_frontalface_default.xml",faces);
Bitmap img = new Bitmap(@"C:\Users\rama\Downloads\kinect-2-background-removal-master\KinectBackgroundRemoval\Assets\emptyimage.png");
img = ResizeImage(img, 1540, 1980);
int high = image.Height;
int width = image.Width;
for (int i = 0; i < width; i++)
{
for (int j = 0; j < high; j++)
{
Bgr pixel = image[j,i];
System.Drawing.Point p = new System.Drawing.Point(j,i);
if (faces[0].Contains(p) && i<1540 && j<1980)
{
img.SetPixel(i, j, System.Drawing.Color.FromArgb(255, (int)pixel.Blue, (int)pixel.Green,(int) pixel.Red));
}
}
}
count++;
key = count.ToString() + "rich.jpg";
image.Save(@"C:\Users\rama\Downloads\kinect-2-background-removal-master\KinectBackgroundRemoval\Assets\"+key);
img.Save(@"C:\Users\rama\Downloads\kinect-2-background-removal-master\KinectBackgroundRemoval\"+key);
bool status = UploadToS3("nitish2", key, @"C:\Users\rama\Downloads\kinect-2-background-removal-master\KinectBackgroundRemoval\"+key);
var FBClient = new FacebookClient();
var UploadToFacebook = new FacebookUpload(FBClient, key);
UploadToFacebook.Show();
GestureFlag = 0;
}
return key;
}
我遇到的问题是在我保存的新图像上打印了一组完全不同的像素。
基本上我认为问题在于:
FaceDetection.Detect(image, "haarcascade_frontalface_default.xml",faces);
for (int i = 0; i < width; i++)
{
for (int j = 0; j < high; j++)
{
Bgr pixel = image[j,i];
System.Drawing.Point p = new System.Drawing.Point(j,i);
if (faces[0].Contains(p) && i<1540 && j<1980)
{
img.SetPixel(i, j, System.Drawing.Color.FromArgb(255, (int)pixel.Blue, (int)pixel.Green,(int) pixel.Red));
}
}
}
有人可以指出我哪里出错了吗? 非常感谢你。
编辑:我已经尝试过像faces[0]!=null
这样的标志,它们应该关注FaceDetection.Detect
是否实际返回任何内容,但我仍然得到相同的结果。
我还尝试保存ColorBitmap
并针对EMGU CV样本进行测试,它可以轻松检测图像中的面部。
编辑2:所以我交叉检查了正在打印的矩形的坐标,其中正在检测的面部的坐标和正在填充的Rectangle()
的值。事实证明,就我所见,它们几乎是一样的。那里没有运气。
我不知道还有什么我可以尝试调试。
如果有人可以指出那会很棒。
谢谢!
答案 0 :(得分:0)
好的,我终于开始工作了。
问题是outsource.directive('dedicated', function(){
return {
restrict: 'E',
link: function(scope, element, attribute){
$("#klik").click(function(){
alert('works');
});
},
replace: true,
templateUrl: 'src/app/components/views/dedicated-prices.html'
};
});
应该是Point[j,i]
。我的Point[i,j]
方法也被证明有点不稳定,我也必须解决这个问题,以便最终正确调试我的代码。