yolov5-opencv-dnn-cpp icon indicating copy to clipboard operation
yolov5-opencv-dnn-cpp copied to clipboard

部署到摄像机上 进行检测 发现画面延迟很高 请问怎么解决 改代码请问在哪改

Open 1314520gu opened this issue 1 year ago • 12 comments

1314520gu avatar Apr 15 '23 09:04 1314520gu

请自行debug,我一没设备,二没环境,你部署修改了什么我也不清楚,我不负责这方面的维护,我只负责c++环境下opencv的部署,有编译opencv可以调用到cuda。其他方面请根据自己的实际需求和相关文档自行修改功能

UNeedCryDear avatar Apr 15 '23 10:04 UNeedCryDear

好的 感谢 。我用视频检测 也延迟高, 我不知道是什么原因 我自己在测试看能不能稳定帧数

1314520gu avatar Apr 15 '23 11:04 1314520gu

视频检测延迟高是多高?请给出详细的环境信息,包括系统,cpu,显卡,opencv是否编译,cuda和cudnn版本等信息我才能确定你是少了什么。

UNeedCryDear avatar Apr 17 '23 01:04 UNeedCryDear

就是一般20秒视频 有读取模型进行检查视频就很慢, 把main检查那部分代码注释掉 播放的视频就比较正常。 我是用工控机 cpu i5-8500 显卡是 RTX3050 我用的是visual studio 进行opencv的编译 编译成功的

1314520gu avatar Apr 17 '23 02:04 1314520gu

视频读取和调用推的代码贴出来看下,你不会每推理一次读取一次模型吧?

UNeedCryDear avatar Apr 17 '23 02:04 UNeedCryDear

你的代码我基本没改 就是把图片部分改成视频了 我不知道啊 我也是第一次玩这个

#if 1

#include "yolo.h" #include #include<opencv2//opencv.hpp> #include<math.h>

using namespace std; using namespace cv; using namespace dnn;

int main() {

string img_path = "D:/c++/yolov5-opencv2/images/2.mp4";
string model_path = "D:/c++/yolov5-opencv2/models/yolov5s.onnx";

Mat frame;
Yolov5 test;
Net net;
if (test.readModel(net, model_path, false)) {
	cout << "read net ok!" << endl;
}
else {
	return -1;
}

//生成随机颜色
vector<Scalar> color;
srand(time(0));
for (int i = 0; i < 80; i++) {
	int b = rand() % 256;
	int g = rand() % 256;
	int r = rand() % 256;
	color.push_back(Scalar(b, g, r));
}


//Mat img = imread(img_path);
VideoCapture cap = VideoCapture(img_path);

while (cap.isOpened()){		

	cap.read(frame);

	vector<Output> result;
	if (test.Detect(frame, net, result)) {
		test.drawPred(frame, result, color);

	}
	else {
		cout << "Detect Failed!" << endl;
	}

	//system("pause");


	imshow("result", frame);
	if (cv::waitKey(1) == 25) break;
}


cv::destroyWindow("result");


return 0;

}

#endif // 0

1314520gu avatar Apr 17 '23 03:04 1314520gu

image 没调用显卡,你是代码都不粗略看下干嘛的吗

UNeedCryDear avatar Apr 17 '23 04:04 UNeedCryDear

这个我尝试过了 true和false都效果都差不多尼 。 是不是cuda版本的问题 我用的是11.1的版本

1314520gu avatar Apr 17 '23 06:04 1314520gu

看下显存有没有起来,显存没起来说明你的opencv没有编译,

UNeedCryDear avatar Apr 17 '23 06:04 UNeedCryDear

请问您找到原因了吗?

lrj-1 avatar Apr 17 '23 07:04 lrj-1

是的 因为是没有编译 我qt mingw编译了 我用qt测试了一下 上面显示 我用的是cpu 我查了资料 qt在window下 mingw是没法带cuda的 msvc可以带cuda 我现在准备重新cmake编译一下。

1314520gu avatar Apr 17 '23 09:04 1314520gu

等我测试完之后 给你说一下情况

1314520gu avatar Apr 17 '23 09:04 1314520gu