gpt4 book ai didi

c++ - 窗口关闭时 OpenCV 中止(核心转储)

转载 作者:太空宇宙 更新时间:2023-11-03 23:12:59 32 4
gpt4 key购买 nike

我尝试读取相机帧并使用 cv::cuda::GpuMat 通过 cv::namedWindow 显示它。

这是我的 C++ 代码:

cv::namedWindow("frame", cv::WINDOW_OPENGL);
cv::resizeWindow("frame", FRAME_WIDTH, FRAME_HEIGHT);
while (true) {
cv::Mat frame;
cv::cuda::GpuMat frame_gpu;

camera.read(frame);
frame_gpu.upload(frame);

cv::imshow("frame", frame_gpu);

//frame_gpu.download(frame);

if (cv::waitKey(1) == 27) {
break;
}
}
cv::destroyAllWindows();

如果我关闭窗口我得到这个错误:

OpenCV Error: The function/feature is not implemented (You should explicitly call download method for cuda::GpuMat object) in getMat_, file /home/nvidia/opencv-3.2.0/modules/core/src/matrix.cpp, line 1276
terminate called after throwing an instance of 'cv::Exception'
what(): /home/nvidia/opencv-3.2.0/modules/core/src/matrix.cpp:1276: error: (-213) You should explicitly call download method for cuda::GpuMat object in function getMat_

Aborted (core dumped)

如果我键入 Esc 键来结束逻辑,它不会引发任何异常。

为什么会出现此错误,我该如何解决?

最佳答案

我猜错误是关于您尝试使用 imshow 显示 GpuMat 图像。您需要将其下载到另一个 Mat 才能使用 imshow 显示它。试试这个

cv::Mat host;
frame_gpu.upload(frame);
frame_gpu.download(host)
cv::imshow("frame", host);

关于c++ - 窗口关闭时 OpenCV 中止(核心转储),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45750953/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com