OpenCVライブラリが提供する人検出器を実行しようとしています。これまでのところ、私のiPhone 6でうまくいったパフォーマンスが得られましたが、検出は非常に悪く、決して正確ではありません。なぜなら、このデフォルトのHOG記述子を使用してより良い検出を行うサンプル動画を見つけることができるからです。ここでiOS上のOpenCVオブジェクト検出(HOGDescriptor)
コードされています
- (void)processImage:(Mat&)image {
cv::Mat cvImg, result;
cvtColor(image, cvImg, COLOR_BGR2HSV);
cv::vector<cv::Rect> found, found_filtered;
hog.detectMultiScale(cvImg, found, 0, cv::Size(4,4), cv::Size(8,8), 1.5, 0);
size_t i;
for (i=0; i < found.size(); i++) {
cv::Rect r = found[i];
rectangle(image, r.tl(), r.br(), Scalar(0,255,0), 2);
}
}
ビデオ入力は、iPhoneのカメラ自体から来て、「processImageは:」フレームごとに呼ばれます。 HOGDescriptorではデフォルトの人検出器を使用します:
_hog.setSVMDetector(cv::HOGDescriptor::getDefaultPeopleDetector());
私は何か助けていただきありがとうございます。 :)
'cvtColor(image、cvImg、COLOR_BGR2HSV);'行を削除して、やり直してください。 – sturkmen
自然に 'hog.detectMultiScale(image ...' – sturkmen
これを試しましたが、このエラーが発生しました: '' 'OpenCVエラー:アサーションが失敗しました(img.type()== CV_8U || img.type()== CV_8UC3)のcomputeGradient''' – Jayman