我想通过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;
}