Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# EmguCV/OpenCV中的身体识别(视频中跟踪人物)_C#_Opencv_Image Processing_Tracking_Emgucv - Fatal编程技术网

C# EmguCV/OpenCV中的身体识别(视频中跟踪人物)

C# EmguCV/OpenCV中的身体识别(视频中跟踪人物),c#,opencv,image-processing,tracking,emgucv,C#,Opencv,Image Processing,Tracking,Emgucv,我试图在视频中认出那个人(不是通过他的脸,而是通过他的身体)。到目前为止,我所做的是找到一个人的HOG、HS和RGB直方图,并将其与所有其他人进行比较以找到他 我正在使用EmguCV,但也将感谢OpenCV的帮助 使用 Size imageSize = new Size(64, 16); Size blockSize = new Size(16, 16); Size blockStride = new Size(16, 8); Si

我试图在视频中认出那个人(不是通过他的脸,而是通过他的身体)。到目前为止,我所做的是找到一个人的HOG、HS和RGB直方图,并将其与所有其他人进行比较以找到他

我正在使用EmguCV,但也将感谢OpenCV的帮助

使用

        Size imageSize = new Size(64, 16);
        Size blockSize = new Size(16, 16);
        Size blockStride = new Size(16, 8);
        Size cellSize = new Size(8, 8);

        HOGDescriptor hog = new HOGDescriptor(imageSize, blockSize, blockStride, cellSize);

        float[] hogs = hog.Compute(image);
        double distance = 0;
        for (int i = 0; i < hist1.Length; i++)
        {
            distance += Math.Abs(hist1[i] - hist2[i]);
        }
        return distance;
计算HS直方图的代码(RGB使用相同的方法)

Image[]channels=hsvImage.Copy().Split();
图像色调=通道[0];
图像sat=通道[1];
计算(新图像[]{hue},真,空);
计算(新图像[]{sat},真,空);
float[]huehist=dh.GetBinValues();
float[]sathist=dh2.GetBinValues();
使用

        Size imageSize = new Size(64, 16);
        Size blockSize = new Size(16, 16);
        Size blockStride = new Size(16, 8);
        Size cellSize = new Size(8, 8);

        HOGDescriptor hog = new HOGDescriptor(imageSize, blockSize, blockStride, cellSize);

        float[] hogs = hog.Compute(image);
        double distance = 0;
        for (int i = 0; i < hist1.Length; i++)
        {
            distance += Math.Abs(hist1[i] - hist2[i]);
        }
        return distance;
双倍距离=0;
for(int i=0;i
发生了什么事

        Size imageSize = new Size(64, 16);
        Size blockSize = new Size(16, 16);
        Size blockStride = new Size(16, 8);
        Size cellSize = new Size(8, 8);

        HOGDescriptor hog = new HOGDescriptor(imageSize, blockSize, blockStride, cellSize);

        float[] hogs = hog.Compute(image);
        double distance = 0;
        for (int i = 0; i < hist1.Length; i++)
        {
            distance += Math.Abs(hist1[i] - hist2[i]);
        }
        return distance;
我正在尝试从视频源跟踪选定的人。人可以从一个摄像机移动到另一个摄像机。 从视频帧中提取人物角色的主体,计算并存储其HOG、HS、RGB直方图。。。然后从下一帧开始,计算所有检测到的人的直方图,并与人物角色的直方图进行匹配最匹配的直方图(最小距离)被视为同一个人(人物角色)。。。所以它会继续追踪那个人

问题

  • 准确度不好(有时它会告诉两个人,颜色非常不同的衣服,相同)
建议

  • 我应该更改/删除什么
  • 我应该使用CvInvoke.CalcHist(…)计算直方图吗代替HS和RGB的密集直方图
  • 我应该在计算距离之前规范化直方图吗
  • 这种归一化方法好吗?(数组的每个值减去平均值)
  • 或者我应该试试别的
我们将非常感谢您提供的任何帮助/建议如果需要更多信息,请发表评论。
谢谢,

我也在同一个项目上工作,我们有相同的工作理念,我有解决这个问题的方法

解决方案1: 在检测到人之后裁剪检测到的人提取特征,保存这些特征,下次你希望跟踪这些人的时候从帧中提取特征并比较它们,我已经写了整个算法

解决方案2 (如果要加快速度)查找人物区域转换为二进制保存边将整个帧转换为二进制,查找人体区域


我还发现了其他提高准确性的技巧,请通过电子邮件与我联系。我在编写代码方面有问题,我们可能会合作找到最佳解决方案。

我也在同一个项目上工作,我们有相同的工作理念,我有解决此问题的方法

解决方案1: 在检测到人之后裁剪检测到的人提取特征,保存这些特征,下次你希望跟踪这些人的时候从帧中提取特征并比较它们,我已经写了整个算法

解决方案2 (如果要加快速度)查找人物区域转换为二进制保存边将整个帧转换为二进制,查找人体区域


我找到了其他提高准确性的技巧,请通过电子邮件与我联系。我在编写代码时遇到问题,我们可能会一起找到最佳解决方案。

您好,欢迎使用堆栈溢出。此处不接受通过电子邮件寻求联系;理想情况下,答案应该包含解决OP问题所需的一切。如果你的代码是开源的,请随意添加一个链接。首先感谢你的回复。我已经在为您的解决方案1工作,我肯定会尝试解决方案2。欢迎Nabeel,我正在使用一个摄像头,我使用SVM存储人体细节,但有一个小问题,我找不到人体的轮廓区域:矩形[]reg;des.setsvmdetator(HOGDescriptor.GetDefaultPeopleDetector());reg=des.检测多尺度(图像);这个返回矩形包含lill量的背景,我希望只有人体区域。您好,欢迎使用堆栈溢出。此处不接受通过电子邮件寻求联系;理想情况下,答案应该包含解决OP问题所需的一切。如果你的代码是开源的,请随意添加一个链接。首先感谢你的回复。我已经在为您的解决方案1工作,我肯定会尝试解决方案2。欢迎Nabeel,我正在使用一个摄像头,我使用SVM存储人体细节,但有一个小问题,我找不到人体的轮廓区域:矩形[]reg;des.setsvmdetator(HOGDescriptor.GetDefaultPeopleDetector());reg=des.检测多尺度(图像);这个包含少量背景的返回矩形,我希望只有人体区域。