我在C/C++上编码并使用(GNU)Makefile来编译代码.我可以用CMake做同样的事情并获得MakeFile.但是,使用Makefile和CMake编译代码有什么区别?
HOG在人体检测中很受欢迎.它可以用于检测图像中的杯子等物体.
我很抱歉没有提出编程问题,但我的意思是如果我可以使用hog来提取对象功能.
根据我的研究,我没有几天我觉得是,但我不确定.
SURF默认适用于灰色图像.我想在HSV图像上做SURF.我的方法是将通道分成H,S和V.我使用S和V进行关键点检测.我试图比较SV与RGB中关键点的数量,并且在通道方面,HSV提供了更多功能.

不确定我在做什么是正确的.需要一些解释在HSV图像上应用SURF的可能性.我读过一篇关于在不同颜色空间而不是SURF上应用SIFT的论文.
感谢您的时间.
我有一个多色的图像.

我想计算图像的主色.主导颜色是红色,我想过滤掉红色.我在opencv中执行以下代码但它没有执行.
inRange(input_image, Scalar(0, 0, 0), Scalar(0, 0, 255), output);
Run Code Online (Sandbox Code Playgroud)
我怎么能得到主导色呢?我的最终项目应该自己确定对象的最大颜色.这方面最好的方法是什么?
我正在使用3种不同的功能开发对象分类器,即SIFT,HISTOGRAM和EGDE.
然而,这3个特征具有不同的维向量,例如SIFT = 128维.HIST = 256.
现在,由于尺寸不同,这些特征不能连接成一次矢量.我打算做什么,但我不确定它是否会是正确的方式是这样的:
对于每个特征,我分别训练分类器,而不是分别对3个不同的特征应用分类,而不是计算多数,最后用多数票宣告图像.
你认为这是正确的方法吗?
我试图加载BGR图像,然后将一些证明某些条件的像素复制到我使用加载的图像宽度,高度和类型创建的新图像.类型是CV_8UC3.
Mat initial_Image = imread("image.jpg");
Mat image(img.rows,img.cols, CV_8UC3);
cout<<initial_Image.type()<<endl;
for(int i = 0;i < img.cols ;i++)
{
for(int j = 0;j < img.rows ;j++)
{
Vec3b intensity = initial_Image.at<Vec3b>(j,i);
uchar blue = intensity.val[0];
uchar green = intensity.val[1];
uchar red = intensity.val[2];
image.at<uchar>(j,i) = blue;
image.at<uchar>(j+1,i+1) = green;
image.at<uchar>(j+2,i+2) = red ;
}
}
out.close();
imshow("im", image);
Run Code Online (Sandbox Code Playgroud)
我没有放置条件,但我只是试图将读取的图像中的所有相应像素复制到新的创建图像中.
我的问题是读取的图像是3通道RGB,但是当我通过将像素复制到新创建的图像来绘制图像时,它给出了一个黑白图像除以3.为什么?因为我必须根据某些条件改变pixles值,所以我不能像有些人所说的那样使用copyto函数.我没有条件的原因是为了简化纠正工作.感谢你.
我正在使用opencv开发一个非常简单的图像分类器.我想使用svm类型poly,但它给出了错误,而其他像sigmoid,RBF工作正常.我将参数定义如下:
SVMParams params;
params.svm_type = SVM::C_SVC;
params.kernel_type = SVM::POLY;
params.gamma = 20;
params.degree = 0;
params.coef0 = 0;
params.C = 7;
params.nu = 0.0;
params.p = 0.0;
params.class_weights = NULL;
params.term_crit.type = CV_TERMCRIT_ITER +CV_TERMCRIT_EPS;
params.term_crit.max_iter = 1000;
params.term_crit.epsilon = 1e-6;
Run Code Online (Sandbox Code Playgroud)
错误读取openCV错误:CvSVM :: set_params中的一个参数值超出范围(内核参数必须为正).我不确定是什么错误.?