我有一个问题,我的猫被一头猫咪欺负,以至于猫在夏天进入我们的房子并吃掉我们的猫食并睡在我们的家具里。
我的猫是灰色的,问题猫是棕色的。
我想在Linux机箱上使用WiFi动作凸轮和OpenCV检测制作警报系统, 但我不再做太多编码了。
所以我的问题是。这是使用标准OpenCV模块的一项微不足道的任务吗?
或者它需要大量的原始代码吗?
我知道有OpenCV Cascade Classifier,但从未使用它。
亲切的问候
雅各
答案 0 :(得分:1)
这是一个非常初步的答案,只是为了展示一种启动项目的方法。
你可以尝试为猫找到训练有素的分类器。例如我找到了this 并使用下面的代码测试了一些猫图像。
#include <iostream>
#include "opencv2/highgui.hpp"
#include "opencv2/objdetect.hpp"
#include "opencv2/imgproc.hpp"
using namespace std;
using namespace cv;
int main( int argc, const char** argv )
{
if (argc < 3)
{
cerr << "usage:\n" << argv[0] << " <image_file_name> <model_file_name>" << endl;
return 0;
}
// Read in the input arguments
string model = argv[2];
CascadeClassifier detector(model);
if(detector.empty())
{
cerr << "The model could not be loaded." << endl;
}
Mat current_image, grayscale;
// Read in image and perform preprocessing
current_image = imread(argv[1]);
cvtColor(current_image, grayscale, CV_BGR2GRAY);
vector<Rect> objects;
detector.detectMultiScale(grayscale, objects, 1.05, 1);
for(int i = 0; i < objects.size(); i++)
{
rectangle(current_image, objects[i], Scalar(0, 255, 0),2);
}
imshow("result",current_image);
waitKey();
return 0;
}
我得到的一些结果图片
当你找到一个令人满意的分类器时,你可以将它与视频帧一起使用,你可以对检测到的猫用它们的颜色进行过滤。
你也可以看看
cat detection using latent SVM in opencv
Black Cat Detector(不知道是否有效)