Skip to content
This repository has been archived by the owner on Nov 9, 2023. It is now read-only.

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

Open
1314520gu opened this issue Apr 15, 2023 · 12 comments

Comments

@1314520gu
Copy link

No description provided.

@UNeedCryDear
Copy link
Owner

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

@1314520gu
Copy link
Author

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

@UNeedCryDear
Copy link
Owner

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

@1314520gu
Copy link
Author

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

@UNeedCryDear
Copy link
Owner

UNeedCryDear commented Apr 17, 2023

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

@1314520gu
Copy link
Author

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

#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

@UNeedCryDear
Copy link
Owner

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

@1314520gu
Copy link
Author

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

@UNeedCryDear
Copy link
Owner

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

@lrj-1
Copy link

lrj-1 commented Apr 17, 2023

请问您找到原因了吗?

@1314520gu
Copy link
Author

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

@1314520gu
Copy link
Author

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

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants