رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
خطای مقدار دهی در open cv
#1
سلام.
خیلی از برنامه هام این مشکل رو دارن که موقع ارسال مقدار متغییری که از نوع vector تعریف میکنم size=0  رو نشون میده  و حلقه for  که داخل برنامه به size  متغییر بستگی داره اجرا نمیشه!! با استفاده از breakpoint  مقادیر نوع
vector<Rect> found, found_filtered  به  صورت تصاویر زیر در میاد.قبل از اینکه کامپایلر به خط تعریف متغییر برسه size=یه عددیه ولی بعد از اجرا صفر میشه.خواهشا اگه کسی میتونه کمک کنه.خیلی کارم گیره...ممنون
[img]http:://www.mojsazan.com/forum/C:\Users\Pourya\Desktop\List\3[/img]




اینم کد:

#include <iostream>

#include<opencv/cvaux.h>
#include<opencv/cxcore.h>
#include <sstream>
#include <string>
#include <opencv\cv.h>
#include<stdio.h>
#include<stdlib.h>
#include "opencv2/highgui/highgui.hpp"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/video/tracking.hpp"

using namespace cv;
using namespace std;


int main (int argc, const char * argv[])
{
   VideoCapture webcam(0);
   webcam.set(CV_CAP_PROP_FRAME_WIDTH, 320);
   webcam.set(CV_CAP_PROP_FRAME_HEIGHT, 240);

   if (!webcam.isOpened())
       return -1;
printf("cout ");

   Mat img;
   namedWindow("opencv", CV_WINDOW_AUTOSIZE);

   HOGDescriptor hog;
   //hog.setSVMDetector(HOGDescriptor::getDefaultPeopleDetector());
hog.setSVMDetector(HOGDescriptor::getDefaultPeopleDetector());// getDefaultPeopleDetector());
   while (true)
   {
       webcam >> img;
       if (img.empty())
           continue;
       
vector<Rect> found, found_filtered ;
     
      hog.detectMultiScale(img, found, 0, Size(8,8), Size(32,32), 1.05, 2);
       size_t i, j;
       for (i=0; i<found.size(); i++)
       {
           Rect r = found[i];
           for (j=0; j<found.size(); j++)
               if (j!=i && (r & found[j]) == r)
                   break;
           if (j== found.size())
               found_filtered.push_back®;
       }

       for (i=0; i<found_filtered.size(); i++)
       {
           Rect r = found_filtered[i];
           r.x += cvRound(r.width*0.1);
   r.width = cvRound(r.width*0.8);
   r.y += cvRound(r.height*0.07);
   r.height = cvRound(r.height*0.8);
   rectangle(img, r.tl(), r.br(), Scalar(0,255,0), 3);        
       }
/**/
      imshow("opencv", img);
        (waitKey(10000));
         
   }
   return 0;
}
پاسخ
سپاس شده توسط


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان