update
This commit is contained in:
		
							
								
								
									
										66
									
								
								YOLOPv2.cpp
									
									
									
									
									
								
							
							
						
						
									
										66
									
								
								YOLOPv2.cpp
									
									
									
									
									
								
							@@ -134,6 +134,10 @@ inline float sigmoid(float x)
 | 
			
		||||
Mat YOLOPv2::detect(Mat& frame)
 | 
			
		||||
{
 | 
			
		||||
    Mat dstimg;
 | 
			
		||||
 | 
			
		||||
    //this->inpWidth /= 10;
 | 
			
		||||
    //this->inpHeight/=10;
 | 
			
		||||
 | 
			
		||||
    resize(frame, dstimg, Size(this->inpWidth, this->inpHeight));
 | 
			
		||||
    this->normalize_(dstimg);
 | 
			
		||||
    array<int64_t, 4> input_shape_{ 1, 3, this->inpHeight, this->inpWidth };
 | 
			
		||||
@@ -224,8 +228,10 @@ Mat YOLOPv2::detect(Mat& frame)
 | 
			
		||||
    const float* pdrive_area = ort_outputs[0].GetTensorMutableData<float>();
 | 
			
		||||
    const float* plane_line = ort_outputs[1].GetTensorMutableData<float>();
 | 
			
		||||
    area = this->inpHeight*this->inpWidth;
 | 
			
		||||
    int min_y = -1;
 | 
			
		||||
    vector<Point2f> points_L, points_R;
 | 
			
		||||
    //int min_y = -1;
 | 
			
		||||
    //vector<Point2f> points_L, points_R;
 | 
			
		||||
    map<double, double> deviation; //偏移采样点距离 -> 道路中心线相对于小车位置横向偏移距离(右偏为正)(单位mm)
 | 
			
		||||
    double dev_angle; //道路中心线相对小车正前方向偏移角弧度值(右偏为正)(中心线右偏即小车相对中心线左偏)
 | 
			
		||||
    for (i = 0; i < frame.rows; i++)
 | 
			
		||||
    {
 | 
			
		||||
        bool flg = false;
 | 
			
		||||
@@ -256,7 +262,7 @@ Mat YOLOPv2::detect(Mat& frame)
 | 
			
		||||
                flg = false;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
        if (min_y == -1 && (left != -1 || right != -1)) {
 | 
			
		||||
        /*if (min_y == -1 && (left != -1 || right != -1)) {
 | 
			
		||||
            min_y = i;
 | 
			
		||||
        }
 | 
			
		||||
        if (left != -1){
 | 
			
		||||
@@ -264,7 +270,7 @@ Mat YOLOPv2::detect(Mat& frame)
 | 
			
		||||
        }
 | 
			
		||||
        if (right != -1){
 | 
			
		||||
            points_R.push_back(Point2f(right, i));
 | 
			
		||||
        }
 | 
			
		||||
        }*/
 | 
			
		||||
        //若左右参考车道线均存在,计算并标记中心点
 | 
			
		||||
        if (left > -1 && right > -1) {
 | 
			
		||||
            int mid = (left + right) / 2;
 | 
			
		||||
@@ -273,19 +279,35 @@ Mat YOLOPv2::detect(Mat& frame)
 | 
			
		||||
                outimg.at<Vec3b>(i, mid+k)[1] = 0;
 | 
			
		||||
                outimg.at<Vec3b>(i, mid+k)[2] = 255;
 | 
			
		||||
            }
 | 
			
		||||
            //提取偏移量
 | 
			
		||||
            for (int k = 0; k < N; k++) {
 | 
			
		||||
                if (ypos[k] == i) {
 | 
			
		||||
                    deviation[dis[k]] = (mid - center) * rate[k];
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
//(需要考虑的问题 1.双车道3条线 2.拐角处曲线 3.近处显示不全 4.两条线粘连)
 | 
			
		||||
    }
 | 
			
		||||
    //备选方案,对左右车道线分别拟合直线并计算中心线解析式 泛化 鲁棒 (目前有bug
 | 
			
		||||
    if (points_L.size() && points_R.size()) {
 | 
			
		||||
    /*if (points_L.size() > 1 && points_R.size() > 1) {
 | 
			
		||||
        Vec4f line_L, line_R;
 | 
			
		||||
        float kL, bL, kR, bR, kM, bM; // x=ky+b
 | 
			
		||||
        fitLine(points_L, line_L, DIST_WELSCH, 0, 0.01, 0.01);
 | 
			
		||||
        fitLine(points_R, line_R, DIST_WELSCH, 0, 0.01, 0.01);
 | 
			
		||||
        kL = line_L[0] / line_L[1];
 | 
			
		||||
        bL = line_L[2] - kL * line_L[3];
 | 
			
		||||
        kR = line_R[0] / line_R[1];
 | 
			
		||||
        bR = line_R[2] - kR * line_R[3];
 | 
			
		||||
        Mat pointsMat_L(points_L.size(), 2, CV_32F), pointsMat_R(points_R.size(), 2, CV_32F),
 | 
			
		||||
                lineRansac_L, lineRansac_R;
 | 
			
		||||
        for (int i = 0; i < points_L.size(); i++){
 | 
			
		||||
            pointsMat_L.at<float>(i, 0) = points_L[i].x;
 | 
			
		||||
            pointsMat_L.at<float>(i, 1) = points_L[i].y;
 | 
			
		||||
        }
 | 
			
		||||
        for (int i = 0; i < points_R.size(); i++){
 | 
			
		||||
            pointsMat_R.at<float>(i, 0) = points_R[i].x;
 | 
			
		||||
            pointsMat_R.at<float>(i, 1) = points_R[i].y;
 | 
			
		||||
        }
 | 
			
		||||
        fitLine(pointsMat_L, lineRansac_L, DIST_L2, 0, 0.01, 0.01);
 | 
			
		||||
        fitLine(pointsMat_R, lineRansac_R, DIST_L2, 0, 0.01, 0.01);
 | 
			
		||||
        double kL, bL, kR, bR, kM, bM; // x=ky+b
 | 
			
		||||
        kL = lineRansac_L.at<float>(0) / (lineRansac_L.at<float>(1) + 1e-12);
 | 
			
		||||
        bL = lineRansac_L.at<float>(2) - kL * lineRansac_L.at<float>(3);
 | 
			
		||||
        kR = lineRansac_R.at<float>(0) / (lineRansac_R.at<float>(1) + 1e-12);
 | 
			
		||||
        bR = lineRansac_R.at<float>(2) - kR * lineRansac_R.at<float>(3);
 | 
			
		||||
        kM = (kL + kR) / 2;
 | 
			
		||||
        bM = (bL + bR) / 2;
 | 
			
		||||
        for (int i = min_y; i < frame.rows; i++) {
 | 
			
		||||
@@ -294,8 +316,26 @@ Mat YOLOPv2::detect(Mat& frame)
 | 
			
		||||
                outimg.at<Vec3b>(i, mid+k)[0] = 255;
 | 
			
		||||
                outimg.at<Vec3b>(i, mid+k)[1] = 0;
 | 
			
		||||
                outimg.at<Vec3b>(i, mid+k)[2] = 255;
 | 
			
		||||
            }
 | 
			
		||||
            }前方xx 距离处
 | 
			
		||||
        }
 | 
			
		||||
        for (int k = 0; k < N; k++) {
 | 
			
		||||
            deviation[dis[k]] = (kM * ypos[k] + bM - center) * rate[k];
 | 
			
		||||
        }
 | 
			
		||||
    }*/
 | 
			
		||||
    //计算偏移角
 | 
			
		||||
    if (deviation.size() > 1) {
 | 
			
		||||
        int siz = deviation.size();
 | 
			
		||||
        double sumX = 0, sumY = 0, sumXY = 0, sumXX = 0;
 | 
			
		||||
        for (auto d: deviation) {
 | 
			
		||||
            sumX += d.first;
 | 
			
		||||
            sumY += d.second;
 | 
			
		||||
            sumXY += d.first * d.second;
 | 
			
		||||
            sumXX += d.first * d.second;
 | 
			
		||||
            cerr << d.first << ": " << d.second <<endl; //前方xx 距离处:道路中心线相对于小车位置横向偏移距离(右偏为正)(单位mm)
 | 
			
		||||
        }
 | 
			
		||||
        double slope = (siz * sumXY - sumX * sumY) / (siz * sumXX - sumX * sumX); //道路中心线相对小车正前方向偏移角度正切值(右偏为正)
 | 
			
		||||
        dev_angle = atan(slope); //道路中心线相对小车正前方向偏移角弧度值(右偏为正)
 | 
			
		||||
        cerr << slope <<endl << dev_angle <<endl;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    return outimg;
 | 
			
		||||
 
 | 
			
		||||
@@ -49,6 +49,12 @@ private:
 | 
			
		||||
    void nms(vector<BoxInfo>& input_boxes);
 | 
			
		||||
    const float anchors[3][6] = { {12, 16, 19, 36, 40, 28}, {36, 75, 76, 55, 72, 146},{142, 110, 192, 243, 459, 401} };
 | 
			
		||||
    const float stride[3] = { 8.0, 16.0, 32.0 };
 | 
			
		||||
    const static int N = 6; //采样点数量
 | 
			
		||||
    const float dis[N] = {1000, 2000, 3000, 4000, 5000, 6000}; //偏移量采样点实际距离(mm)
 | 
			
		||||
    const int ypos[N] = {928, 839, 778, 735, 707, 686}; //偏移量采样点y轴坐标
 | 
			
		||||
    const int center = 1048; //车体中心x轴坐标
 | 
			
		||||
    const float rate[N] = {6.37, 8.26, 10.53, 12.98, 15.87, 19.23}; //图像像素到实际偏移(mm)转换率
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
    Env env = Env(ORT_LOGGING_LEVEL_ERROR, "YOLOPv2");
 | 
			
		||||
    Ort::Session *ort_session = nullptr;
 | 
			
		||||
 
 | 
			
		||||
@@ -3,7 +3,7 @@
 | 
			
		||||
# Generated by qmake (3.1) (Qt 5.15.3)
 | 
			
		||||
# Project:  ../fast-yolopv2.pro
 | 
			
		||||
# Template: app
 | 
			
		||||
# Command: /usr/lib/qt5/bin/qmake -o Makefile ../fast-yolopv2.pro -spec linux-g++
 | 
			
		||||
# Command: /usr/lib/qt5/bin/qmake -o Makefile ../fast-yolopv2.pro -spec linux-g++ CONFIG+=debug CONFIG+=qml_debug
 | 
			
		||||
#############################################################################
 | 
			
		||||
 | 
			
		||||
MAKEFILE      = Makefile
 | 
			
		||||
@@ -14,9 +14,9 @@ EQ            = =
 | 
			
		||||
 | 
			
		||||
CC            = gcc
 | 
			
		||||
CXX           = g++
 | 
			
		||||
DEFINES       = -DOPENCV -DGPU -DCUDNN -DQT_NO_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB
 | 
			
		||||
CFLAGS        = -pipe -O2 -Wall -Wextra -D_REENTRANT -fPIC $(DEFINES)
 | 
			
		||||
CXXFLAGS      = -pipe -O2 -std=gnu++11 -Wall -Wextra -D_REENTRANT -fPIC $(DEFINES)
 | 
			
		||||
DEFINES       = -DOPENCV -DGPU -DCUDNN -DQT_QML_DEBUG -DQT_WIDGETS_LIB -DQT_GUI_LIB -DQT_CORE_LIB
 | 
			
		||||
CFLAGS        = -pipe -g -Wall -Wextra -D_REENTRANT -fPIC $(DEFINES)
 | 
			
		||||
CXXFLAGS      = -pipe -g -std=gnu++11 -Wall -Wextra -D_REENTRANT -fPIC $(DEFINES)
 | 
			
		||||
INCPATH       = -I../../Fast-YolopV2 -I. -I/usr/local/Opencv-4.10.0/include/opencv4 -I/usr/local/cuda-12.6/include -I/usr/local/include/onnxruntime -I/usr/include/aarch64-linux-gnu/qt5 -I/usr/include/aarch64-linux-gnu/qt5/QtWidgets -I/usr/include/aarch64-linux-gnu/qt5/QtGui -I/usr/include/aarch64-linux-gnu/qt5/QtCore -I. -I. -I/usr/lib/aarch64-linux-gnu/qt5/mkspecs/linux-g++
 | 
			
		||||
QMAKE         = /usr/lib/qt5/bin/qmake
 | 
			
		||||
DEL_FILE      = rm -f
 | 
			
		||||
@@ -39,7 +39,7 @@ COMPRESS      = gzip -9f
 | 
			
		||||
DISTNAME      = fast-yolopv21.0.0
 | 
			
		||||
DISTDIR = /home/wuxianfu/Projects/Fast-YolopV2/build/.tmp/fast-yolopv21.0.0
 | 
			
		||||
LINK          = g++
 | 
			
		||||
LFLAGS        = -Wl,-O1
 | 
			
		||||
LFLAGS        = 
 | 
			
		||||
LIBS          = $(SUBLIBS) -L/usr/local/Opencv-4.10.0/lib -lopencv_core -lopencv_imgproc -lopencv_highgui -lopencv_imgcodecs -lopencv_videoio -L/usr/local/lib -lonnxruntime /usr/lib/aarch64-linux-gnu/libQt5Widgets.so /usr/lib/aarch64-linux-gnu/libQt5Gui.so /usr/lib/aarch64-linux-gnu/libQt5Core.so -lGL -lpthread   
 | 
			
		||||
AR            = ar cqs
 | 
			
		||||
RANLIB        = 
 | 
			
		||||
@@ -122,6 +122,7 @@ DIST          = /usr/lib/aarch64-linux-gnu/qt5/mkspecs/features/spec_pre.prf \
 | 
			
		||||
		/usr/lib/aarch64-linux-gnu/qt5/mkspecs/features/default_pre.prf \
 | 
			
		||||
		/usr/lib/aarch64-linux-gnu/qt5/mkspecs/features/resolve_config.prf \
 | 
			
		||||
		/usr/lib/aarch64-linux-gnu/qt5/mkspecs/features/default_post.prf \
 | 
			
		||||
		/usr/lib/aarch64-linux-gnu/qt5/mkspecs/features/qml_debug.prf \
 | 
			
		||||
		/usr/lib/aarch64-linux-gnu/qt5/mkspecs/features/warn_on.prf \
 | 
			
		||||
		/usr/lib/aarch64-linux-gnu/qt5/mkspecs/features/qt.prf \
 | 
			
		||||
		/usr/lib/aarch64-linux-gnu/qt5/mkspecs/features/resources_functions.prf \
 | 
			
		||||
@@ -214,6 +215,7 @@ Makefile: ../fast-yolopv2.pro /usr/lib/aarch64-linux-gnu/qt5/mkspecs/linux-g++/q
 | 
			
		||||
		/usr/lib/aarch64-linux-gnu/qt5/mkspecs/features/default_pre.prf \
 | 
			
		||||
		/usr/lib/aarch64-linux-gnu/qt5/mkspecs/features/resolve_config.prf \
 | 
			
		||||
		/usr/lib/aarch64-linux-gnu/qt5/mkspecs/features/default_post.prf \
 | 
			
		||||
		/usr/lib/aarch64-linux-gnu/qt5/mkspecs/features/qml_debug.prf \
 | 
			
		||||
		/usr/lib/aarch64-linux-gnu/qt5/mkspecs/features/warn_on.prf \
 | 
			
		||||
		/usr/lib/aarch64-linux-gnu/qt5/mkspecs/features/qt.prf \
 | 
			
		||||
		/usr/lib/aarch64-linux-gnu/qt5/mkspecs/features/resources_functions.prf \
 | 
			
		||||
@@ -229,7 +231,7 @@ Makefile: ../fast-yolopv2.pro /usr/lib/aarch64-linux-gnu/qt5/mkspecs/linux-g++/q
 | 
			
		||||
		/usr/lib/aarch64-linux-gnu/qt5/mkspecs/features/yacc.prf \
 | 
			
		||||
		/usr/lib/aarch64-linux-gnu/qt5/mkspecs/features/lex.prf \
 | 
			
		||||
		../fast-yolopv2.pro
 | 
			
		||||
	$(QMAKE) -o Makefile ../fast-yolopv2.pro -spec linux-g++
 | 
			
		||||
	$(QMAKE) -o Makefile ../fast-yolopv2.pro -spec linux-g++ CONFIG+=debug CONFIG+=qml_debug
 | 
			
		||||
/usr/lib/aarch64-linux-gnu/qt5/mkspecs/features/spec_pre.prf:
 | 
			
		||||
/usr/lib/aarch64-linux-gnu/qt5/mkspecs/common/unix.conf:
 | 
			
		||||
/usr/lib/aarch64-linux-gnu/qt5/mkspecs/common/linux.conf:
 | 
			
		||||
@@ -293,6 +295,7 @@ Makefile: ../fast-yolopv2.pro /usr/lib/aarch64-linux-gnu/qt5/mkspecs/linux-g++/q
 | 
			
		||||
/usr/lib/aarch64-linux-gnu/qt5/mkspecs/features/default_pre.prf:
 | 
			
		||||
/usr/lib/aarch64-linux-gnu/qt5/mkspecs/features/resolve_config.prf:
 | 
			
		||||
/usr/lib/aarch64-linux-gnu/qt5/mkspecs/features/default_post.prf:
 | 
			
		||||
/usr/lib/aarch64-linux-gnu/qt5/mkspecs/features/qml_debug.prf:
 | 
			
		||||
/usr/lib/aarch64-linux-gnu/qt5/mkspecs/features/warn_on.prf:
 | 
			
		||||
/usr/lib/aarch64-linux-gnu/qt5/mkspecs/features/qt.prf:
 | 
			
		||||
/usr/lib/aarch64-linux-gnu/qt5/mkspecs/features/resources_functions.prf:
 | 
			
		||||
@@ -309,7 +312,7 @@ Makefile: ../fast-yolopv2.pro /usr/lib/aarch64-linux-gnu/qt5/mkspecs/linux-g++/q
 | 
			
		||||
/usr/lib/aarch64-linux-gnu/qt5/mkspecs/features/lex.prf:
 | 
			
		||||
../fast-yolopv2.pro:
 | 
			
		||||
qmake: FORCE
 | 
			
		||||
	@$(QMAKE) -o Makefile ../fast-yolopv2.pro -spec linux-g++
 | 
			
		||||
	@$(QMAKE) -o Makefile ../fast-yolopv2.pro -spec linux-g++ CONFIG+=debug CONFIG+=qml_debug
 | 
			
		||||
 | 
			
		||||
qmake_all: FORCE
 | 
			
		||||
 | 
			
		||||
@@ -355,7 +358,7 @@ compiler_moc_predefs_make_all: moc_predefs.h
 | 
			
		||||
compiler_moc_predefs_clean:
 | 
			
		||||
	-$(DEL_FILE) moc_predefs.h
 | 
			
		||||
moc_predefs.h: /usr/lib/aarch64-linux-gnu/qt5/mkspecs/features/data/dummy.cpp
 | 
			
		||||
	g++ -pipe -O2 -std=gnu++11 -Wall -Wextra -dM -E -o moc_predefs.h /usr/lib/aarch64-linux-gnu/qt5/mkspecs/features/data/dummy.cpp
 | 
			
		||||
	g++ -pipe -g -std=gnu++11 -Wall -Wextra -dM -E -o moc_predefs.h /usr/lib/aarch64-linux-gnu/qt5/mkspecs/features/data/dummy.cpp
 | 
			
		||||
 | 
			
		||||
compiler_moc_header_make_all: moc_mainwindow.cpp
 | 
			
		||||
compiler_moc_header_clean:
 | 
			
		||||
@@ -477,7 +480,6 @@ moc_mainwindow.o: moc_mainwindow.cpp
 | 
			
		||||
install_target: first FORCE
 | 
			
		||||
	@test -d $(INSTALL_ROOT)/opt/fast-yolopv2/bin || mkdir -p $(INSTALL_ROOT)/opt/fast-yolopv2/bin
 | 
			
		||||
	$(QINSTALL_PROGRAM) $(QMAKE_TARGET) $(INSTALL_ROOT)/opt/fast-yolopv2/bin/$(QMAKE_TARGET)
 | 
			
		||||
	-$(STRIP) $(INSTALL_ROOT)/opt/fast-yolopv2/bin/$(QMAKE_TARGET)
 | 
			
		||||
 | 
			
		||||
uninstall_target: FORCE
 | 
			
		||||
	-$(DEL_FILE) $(INSTALL_ROOT)/opt/fast-yolopv2/bin/$(QMAKE_TARGET)
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										
											BIN
										
									
								
								build/YOLOPv2.o
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								build/YOLOPv2.o
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
							
								
								
									
										
											BIN
										
									
								
								build/main.o
									
									
									
									
									
								
							
							
						
						
									
										
											BIN
										
									
								
								build/main.o
									
									
									
									
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							@@ -59,7 +59,6 @@
 | 
			
		||||
#define _STDC_PREDEF_H 1
 | 
			
		||||
#define __cpp_nsdmi 200809L
 | 
			
		||||
#define __linux 1
 | 
			
		||||
#define __OPTIMIZE__ 1
 | 
			
		||||
#define __CHAR_UNSIGNED__ 1
 | 
			
		||||
#define __UINT32_MAX__ 0xffffffffU
 | 
			
		||||
#define __DBL_DENORM_MIN__ double(4.94065645841246544176568792868221372e-324L)
 | 
			
		||||
@@ -77,7 +76,6 @@
 | 
			
		||||
#define __WCHAR_MIN__ 0U
 | 
			
		||||
#define __INT64_C(c) c ## L
 | 
			
		||||
#define __GCC_ATOMIC_POINTER_LOCK_FREE 2
 | 
			
		||||
#define _FORTIFY_SOURCE 2
 | 
			
		||||
#define __SIZEOF_INT__ 4
 | 
			
		||||
#define __INT_FAST64_WIDTH__ 64
 | 
			
		||||
#define __PRAGMA_REDEFINE_EXTNAME 1
 | 
			
		||||
@@ -194,6 +192,7 @@
 | 
			
		||||
#define __INTMAX_WIDTH__ 64
 | 
			
		||||
#define __LDBL_HAS_INFINITY__ 1
 | 
			
		||||
#define __FLT_DIG__ 6
 | 
			
		||||
#define __NO_INLINE__ 1
 | 
			
		||||
#define __DEC_EVAL_METHOD__ 2
 | 
			
		||||
#define __FLT_MANT_DIG__ 24
 | 
			
		||||
#define __FLT16_MIN_10_EXP__ (-4)
 | 
			
		||||
 
 | 
			
		||||
@@ -1,6 +1,6 @@
 | 
			
		||||
<?xml version="1.0" encoding="UTF-8"?>
 | 
			
		||||
<!DOCTYPE QtCreatorProject>
 | 
			
		||||
<!-- Written by QtCreator 6.0.2, 2025-03-26T17:54:55. -->
 | 
			
		||||
<!-- Written by QtCreator 6.0.2, 2025-04-21T05:04:48. -->
 | 
			
		||||
<qtcreator>
 | 
			
		||||
 <data>
 | 
			
		||||
  <variable>EnvironmentId</variable>
 | 
			
		||||
@@ -92,7 +92,7 @@
 | 
			
		||||
   <value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">未命名</value>
 | 
			
		||||
   <value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">未命名</value>
 | 
			
		||||
   <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">{17edb790-9733-4e4c-9173-37d0ab7cfd4d}</value>
 | 
			
		||||
   <value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">1</value>
 | 
			
		||||
   <value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">0</value>
 | 
			
		||||
   <value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
 | 
			
		||||
   <value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
 | 
			
		||||
   <valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
 | 
			
		||||
@@ -103,7 +103,7 @@
 | 
			
		||||
     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
 | 
			
		||||
      <value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
 | 
			
		||||
      <value type="QString" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
 | 
			
		||||
      <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">true</value>
 | 
			
		||||
      <value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
 | 
			
		||||
      <valuelist type="QVariantList" key="QtProjectManager.QMakeBuildStep.SelectedAbis"/>
 | 
			
		||||
     </valuemap>
 | 
			
		||||
     <valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
 | 
			
		||||
 
 | 
			
		||||
@@ -20,8 +20,9 @@ MainWindow::MainWindow(QWidget *parent)
 | 
			
		||||
    , ui(new Ui::MainWindow)
 | 
			
		||||
{
 | 
			
		||||
    ui->setupUi(this);
 | 
			
		||||
    OpenUSBCamera();
 | 
			
		||||
    //ShowImage();
 | 
			
		||||
    ShowVideo();
 | 
			
		||||
    //ShowVideo();
 | 
			
		||||
    //OpenCSICamera();
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
@@ -59,7 +60,7 @@ void MainWindow::ShowVideo()
 | 
			
		||||
    static const string kWinName = "Deep learning object detection in ONNXRuntime";
 | 
			
		||||
    namedWindow(kWinName, WINDOW_NORMAL);
 | 
			
		||||
 | 
			
		||||
    cv::VideoCapture cap("/home/wuxianfu/Projects/Fast-YolopV2/build/videos/test1.mp4");
 | 
			
		||||
    cv::VideoCapture cap("/home/wuxianfu/Projects/Fast-YolopV2/build/videos/566a351c29c00924a337e91e85fa7dec.mp4");
 | 
			
		||||
    if (!cap.isOpened()) {
 | 
			
		||||
        std::cerr << "Error opening video stream" << std::endl;
 | 
			
		||||
        return;
 | 
			
		||||
@@ -77,7 +78,6 @@ void MainWindow::ShowVideo()
 | 
			
		||||
        auto end = std::chrono::steady_clock::now();
 | 
			
		||||
        std::chrono::duration<double> spent = end - start;
 | 
			
		||||
        qDebug()<< " Time: " << spent.count() << " sec \n";
 | 
			
		||||
 | 
			
		||||
        imshow(kWinName, outimg);
 | 
			
		||||
        if (cv::waitKey(5) >= 0) break; // 按任意键退出循环
 | 
			
		||||
    }
 | 
			
		||||
@@ -90,13 +90,14 @@ void MainWindow::OpenUSBCamera() {
 | 
			
		||||
 | 
			
		||||
    Net_config YOLOPv2_nets = { 0.5, 0.5, "/home/wuxianfu/Projects/Fast-YolopV2/build/onnx/yolopv2_192x320.onnx" };   ////choices = onnx文件夹里的文件
 | 
			
		||||
    YOLOPv2 net(YOLOPv2_nets);
 | 
			
		||||
    cv::VideoCapture cap(1); // 使用默认的摄像头索引(通常是0)
 | 
			
		||||
    cv::VideoCapture cap(0); // 使用默认的摄像头索引(通常是0)
 | 
			
		||||
    if (!cap.isOpened()) {
 | 
			
		||||
        std::cerr << "Error opening video stream" << std::endl;
 | 
			
		||||
        return;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    cv::Mat frame;
 | 
			
		||||
    int cnt=0;
 | 
			
		||||
    while (true) {
 | 
			
		||||
        cap >> frame; // 读取一帧
 | 
			
		||||
        if (frame.empty()) {
 | 
			
		||||
@@ -104,9 +105,14 @@ void MainWindow::OpenUSBCamera() {
 | 
			
		||||
            break;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        cv::resize(frame, frame, Size(frame.cols/2,frame.rows/2));
 | 
			
		||||
 | 
			
		||||
        //cv::imshow("USB Camera", frame);
 | 
			
		||||
        //cv::imwrite("USB Camera/"+to_string(++cnt)+".jpg", frame);
 | 
			
		||||
        Mat outimg = net.detect(frame);
 | 
			
		||||
 | 
			
		||||
        cv::imshow("USB Camera", outimg); // 显示帧
 | 
			
		||||
        cv::imwrite("USB Camera/"+to_string(++cnt)+".jpg", outimg);
 | 
			
		||||
        if (cv::waitKey(10) >= 0) break; // 按任意键退出循环
 | 
			
		||||
    }
 | 
			
		||||
    cap.release(); // 释放资源
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user