我有一个项目,我想检测图像中的对象; 我的目标是使用HOG功能.通过使用OpenCV SVM实现,我可以找到用于检测人的代码,并且我阅读了一些关于调整参数以便检测对象而不是人的文章.不幸的是,由于一些原因我不能这样做; 首先,我可能错误地调整了参数,其次,我不是C++中的优秀程序员,但我必须使用C++/OpenCV ... 在这里你可以找到用于检测人的HOG功能的代码使用C++/OpenCV.
假设我想检测此图像中的对象.现在,我将向您展示我在代码中尝试更改的内容,但它与我无关.
我试图改变的代码:
HOGDescriptor hog;
hog.setSVMDetector(HOGDescriptor::getDefaultPeopleDetector());
Run Code Online (Sandbox Code Playgroud)
我尝试getDefaultPeopleDetector()使用以下参数进行更改,但它不起作用:
(Size(64, 128), Size(16, 16), Size(8, 8), Size(8, 8), 9, 0,-1, 0, 0.2, true, cv::HOGDescriptor::DEFAULT_NLEVELS)
Run Code Online (Sandbox Code Playgroud)
然后我尝试制作一个矢量,但是当我想打印结果时,它似乎是空的.
vector<float> detector;
HOGDescriptor hog(Size(64, 128), Size(16, 16), Size(8, 8), Size(8, 8), 9, 0,-1, 0, 0.2, true, cv::HOGDescriptor::DEFAULT_NLEVELS);
hog.setSVMDetector(detector);
Run Code Online (Sandbox Code Playgroud)
拜托,我需要帮助解决这个问题.
我正在使用SIFT功能在opencv中实现Bag Of Words,以便对特定数据集进行分类.到目前为止,我一直是苹果集群描述符并生成词汇.据我所知,我必须训练SVM ...但我有一些问题,我真的很困惑他们.主要问题是实现背后的概念,这些是我的问题:
1-当我提取特征然后创建词汇表时,我是否应该提取所有对象的特征(比如5个对象)并将它们放在一个文件中,所以我将它们全部放在一个包含所有对象的单个词汇表文件中话?以及在我进行分类时如何将它们分开?
2-如何实现SVM?我知道openCV中使用的函数但是如何?
3-我可以在MATLAB中完成工作,我的意思是SVM培训的实施,但有没有可用的代码可以指导我完成我的工作?我已经看到安德烈Vedaldi使用的代码,在这里,但他每次用一个类和另一个问题,他没有展示如何创建,他是用他的练习.MAT文件只工作.我能找到的所有其他实现,他们都没有使用SVM.所以,你能指导这一点吗!
谢谢
matlab opencv image-processing object-recognition matlab-cvst
今天,我有很多问题,我需要任何帮助,即使在我的问题的某些部分.这些问题非常迫切需要回答,所以请尽我所能.
我正在使用光流法研究图像稳定.这个步骤正确完成并给出了很好的结果,现在我想实现视频的稳定性,我有两种方法可以做到这一点:第一种方式:我已经获得了第一帧和第一帧的特征之间的平移和旋转矩阵下一帧.现在,我的主管建议我这样做; 使画布比原始画面大两倍,并复制中间的第一帧.对于每个下一帧,使用我获得的变换来计算偏移和旋转.使用这些参数并将下一帧复制到其更正位置.这应该产生一个纠正的视频.
那怎么办呢?如果可用,请关于openCV中的功能的帮助.
第二种方式,
我试图以自己的方式做到这一点,我试图通过扭曲图像来获取校正的视频,我已经获得了单应矩阵,但它cvWarpPerspective().无论如何都不能用于函数,这是正确的我正在做什么在这里获得稳定的图像或你的建议?
题:
1-同形矩阵给出的负值是正确的吗?
2-正如我上面提到的关于旋转和平移矩阵,我必须制作这个方程,以便将第二帧中的估计特征返回到第一帧中的位置
Y =旋转矩阵*x +平移矩阵
它有时给出几乎完美的结果,而另一次给出非常可怕的结果,我得到负值并远离他们应该在的位置,为什么它是那样的?
请回答你能回答的问题,即使这是次问题
非常感谢.
我有一个可能适合初学者的问题.
我想在c ++中将20x2矩阵乘以2x2矩阵.
我用openCV尝试了但是我得到了一个错误
cvarrToMat中的错误参数(未知数组类型)
这是我在openCV中使用的代码,以便检查问题,如果它是我的代码或openCV中的问题,但它仍然无法正常工作,我可以编译出错,但是当我测试代码时,我得到了问题"cvarrToMat中的错误参数(未知数组类型)"
#include <stdio.h>
#include <stdlib.h>
//#include "/usr/include/opencv/cv.h"
#include <cv.h>
#include <cvaux.h>
#include <highgui.h>
#include <math.h>
#include <iostream>
int main()
{
double a[] = {1, 2, 3, 4};
CvMat Ma;
cvInitMatHeader(&Ma, 2, 2, CV_32FC1, a);
double b[] ={0, -1, 1, 0};
CvMat Mb;
cvInitMatHeader(&Mb, 2, 2, CV_32FC1, b);
CvMat Mc;
CvMat Mc1;
cvMatMul(&Ma, &Mb, &Mc);
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我有一个简单的问题,我想知道,有哪些库可用,并且可以在c ++或opencv中实现SIFT,HOG(直方图定向梯度)和SURF的良好结果?
因此:1-如果可以,请给我链接代码,我将非常感激.2-如果你知道其中一个或任何类型的信息引导我到我想要的东西,我也会非常感激.
谢谢
我想知道如何为一组框架中的一组特征找到旋转矩阵.我会更具体.我有2个帧,有20个特征,比如帧1和帧2.我可以估计两个帧中的特征的位置.例如,假设位置(x,y)处的某个第1帧特征,我确切地知道它在哪里,所以让我们说(x',y').
我的问题是功能被移动并可能旋转,所以我想知道如何计算旋转矩阵,我知道2D的旋转矩阵:

但我不知道如何计算角度,以及如何做到这一点?我试图在OpenCV中的函数,而cv2DRotationMatrix();但正如我上面我所提到的问题,不知道如何来计算旋转矩阵,并且它提供了2×3的矩阵,另一个问题的角度,所以如果不会制定出事业我将借此20×2矩阵,(20是特征的数量和2是在(X,Y)的位置),并通过由2*3矩阵,其是从该函数的结果相乘,然后我会得到20*3矩阵,它似乎不太现实,因为我正在使用2D.
所以我该怎么做?更具体一点,请告诉我如何计算在矩阵中使用它的角度?
寻找libSVM的C++接口的教程和/或示例代码.具体来说,我想对使用SIFT或SURF特征描述符提取的特征进行分类.
我试过在网站上查找并没有找到任何此类文档/示例代码.
我已经在(opencv开源)中提取了SIFT功能,并将它们提取为关键点.现在,我想将它们转换为Matrix(带有x,y坐标)或将它们保存在文本文件中......
在这里,您可以看到用于提取关键点的示例代码,现在我想知道如何将它们转换为MAT或将它们保存在txt,xml或yaml中......
cv::SiftFeatureDetector detector;
std::vector<cv::KeyPoint> keypoints;
detector.detect(input, keypoints);
Run Code Online (Sandbox Code Playgroud) 我想知道,如果对于像"汽车"这样的对象的HOG描述符有任何实现,而对于MATLAB中的人类则不是吗?
但万一,只有人类,你能指导我到那个代码,并给我如此提示,以改善用于"汽车或摩托车等对象"的代码
matlab image-processing object-detection feature-detection matlab-cvst