gpt4 book ai didi

c++ - 带有 roi 的 opencv 错误断言

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

我正在尝试使用 HOG 分类器检测人和其他物体。我首先使用以下代码检测人:

    capt >> frame_capture;
capt1 >> frame_capture1;
cv::cvtColor(frame_capture1,gray, CV_RGB2GRAY);
vector<vector<Point> > contours;
vector<Vec4i> hierarchy;
findContours(gray,contours, hierarchy, CV_RETR_EXTERNAL, CV_CHAIN_APPROX_SIMPLE, Point(0, 0) );
vector <Rect> listOfRectangles;
// detecting objects
listOfRectangles = drawBoundingBox(contours);

if(!frame_capture.empty()){
for (int i =0; i<listOfRectangles.size();++i)
{
//rectangle (frame_capture, listOfRectangles[i],Scalar(255,255,0),1,8,0); //! display detections
cv::Mat roi;
roi.create(frame_capture.size(),CV_8UC3);
cv::Mat image=imread("");
roi = image(listOfRectangles[i]);
cv::Mat window;
cv::resize(roi, window, cv::Size(64, 128));
hog.detect(window, foundLocations);
if (!foundLocations.empty())
{
cout << "person .." << endl;
}
}

//oVideoWriter.write(frame_capture);
imshow("video",frame_capture);
waitKey(25);
}

我遇到了这个错误:

OpenCV Error: Assertion failed (0 <= roi.x && 0 <= roi.width && roi.x + roi.width <= m.cols && 0 <= roi.y && 0 <= roi.height && roi.y + roi.height <= m.rows) in Mat

我用过这个链接:OpenCV: How to use HOGDescriptor::detect method?

最佳答案

当您使用 imread() 时,您正在传递一个空路径,因此找不到图像并且 cv::Mat image 没有数据。在下一行中,您尝试获取空图像的子图像 (ROI),这就是您收到错误的原因。

您需要正确初始化您的cv::Mat 图像。您可以通过在该行之后添加一个简单的验证来检查一切是否正常,例如

if(! image.data )                              // Check for invalid input
{
std::cout << "Could not open or find the image" << std::endl ;
return;
}

关于c++ - 带有 roi 的 opencv 错误断言,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36353386/

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