如何检测ROI区域中的对象

时间:2019-07-15 06:36:21

标签: c++ opencv

我想通过opencv c ++在道路行驶图像上设置ROI,并检测ROI中的对象。深度跑步太复杂,难以设置和使用,如果使用光流运动,似乎可以捕捉到周围的风景。

有没有一种方法可以只检测对象而不影响视频速度而无需深入运行?

PS。我之所以使用翻译器,是因为我在英语上犯了一个错误。

#include <opencv2/opencv.hpp>  
#include <opencv2/imgproc.hpp>
#include <gsl/gsl_fit.h>
#include <iostream>

using namespace cv;
using namespace std;

Mat frame, reframe;


int main(){

//저장된 동영상 불러오기
VideoCapture cap("test.mp4");

//영상 찾기 실패시
if (!cap.isOpened()){
    cerr << "error - 영상을 찾을수 없습니다" << endl;
    return -1;
}



while (1) {
    //영상 읽어오기
    cap.read(frame);


    //영상 크기 줄이기
    //resize(frame, reframe, Size(), 0.5, 0.5, INTER_AREA);
    resize(frame, reframe, Size(1280,720));

    //관심영역1 시작점
    int startx_1 = 300;
    int starty_1 = 350;

    //관심영역1 끝점
    int endx_1 = 500;
    int endy_1 = 650;

    int win_size = 10;

    //관심영역1 사각형 테두리 만들기
    rectangle(reframe, Point(startx_1, starty_1), Point(endx_1, endy_1), Scalar(0, 255, 0), 1);

    //관심영역1 지정(영상, 사각형( x축 시작점, y축 시작점, 가로 길이, 세로 길이))
    Mat ROI_1(reframe, Rect(startx_1, starty_1, endx_1 - startx_1, endy_1 - starty_1));

    /*
    //캐니엣지(관심영역1)
    cvtColor(ROI_1, ROI_1, COLOR_BGR2GRAY);
    Canny(ROI_1, ROI_1, 125, 35);
    cvtColor(ROI_1, ROI_1, COLOR_GRAY2BGR);
    */

    //관심영역1 붙여넣기( 프레임( 사각형( x축 시작점, y축 시작점, 가로 길이, 세로 길이 ) ) )
    //ROI_1.copyTo( reframe( Rect(startx_1, starty_1, endx_1 - startx_1, endy_1 - starty_1) ) );



    //영상 출력
    imshow("Live", reframe);

    //키 입력 체크(0.001초)
    int check = waitKey(1);

    //space키 일시정지
    if (check == 32) {
        waitKey(0);
    }
    //esc 종료
    else if (check == 27) {
        break;
    }

}

return 0;

}

0 个答案:

没有答案