gpt4 book ai didi

ios - 使用 OpenCV 检测上身部分

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:14:20 25 4
gpt4 key购买 nike

我正在开发一个与 OpenCV 集成的 iOS 项目。
我想要的输出是这样的:

enter image description here

如何检测上身部分(即:从颈部到腿部)?
到目前为止,我为实现 body 检测所做的就是这样......
如果有人以前做过这个。
请帮助我..

-(void)processImage:(Mat&)image
{
std::vector<cv::Rect> bodies;
Mat grayscaleFrame;

cvtColor(image, grayscaleFrame, CV_BGR2GRAY);
equalizeHist(grayscaleFrame, grayscaleFrame);

upperBodyCascade.detectMultiScale(grayscaleFrame, image, bodies, HaarOptions,cv::Size(30,30));
for (size_t i = 0; i < bodies.size(); i++)
{
rectangle(image, bodies[i], Scalar(255, 0, 255));
}

}

最佳答案

您可以使用 Haar Cascade Classifier正在加载 haarcascade_upperbody.xml

你可以找到一个例子here .您只需要更改加载的分类器。

代码如下:

#include <opencv2/opencv.hpp>
#include <iostream>

using namespace std;
using namespace cv;

/** Function Headers */
void detectAndDisplay(Mat frame);

/** Global variables */
String upper_body_cascade_name = "path\\to\\haarcascade_upperbody.xml";
CascadeClassifier upper_body_cascade;
string window_name = "Capture - Upper Body detection";
RNG rng(12345);

/** @function main */
int main(int argc, const char** argv)
{
VideoCapture capture(0);
Mat frame;

//-- 1. Load the cascades
if (!upper_body_cascade.load(upper_body_cascade_name)){ printf("--(!)Error loading\n"); return -1; };

//-- 2. Read the video stream
if (capture.isOpened())
{
while (true)
{
capture >> frame;

//-- 3. Apply the classifier to the frame
if (!frame.empty())
{
detectAndDisplay(frame);
}
else
{
printf(" --(!) No captured frame -- Break!"); break;
}

int c = waitKey(10);
if ((char)c == 'c') { break; }
}
}
return 0;
}

/** @function detectAndDisplay */
void detectAndDisplay(Mat frame)
{
std::vector<Rect> bodies;
Mat frame_gray;

cvtColor(frame, frame_gray, CV_BGR2GRAY);
equalizeHist(frame_gray, frame_gray);

//-- Detect faces
upper_body_cascade.detectMultiScale(frame_gray, bodies, 1.1, 2, 0 | CV_HAAR_SCALE_IMAGE, Size(30, 30));

for (size_t i = 0; i < bodies.size(); i++)
{
rectangle(frame, bodies[i], Scalar(255, 0, 255));
}
//-- Show what you got
imshow(window_name, frame);
}

关于ios - 使用 OpenCV 检测上身部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31834415/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com