繁体   English   中英

当纵横比反转时,OpenCV resize 返回空图像

[英]OpenCV resize returns empty image when aspect ratio is inverted

我在 CUDA C++ 环境中使用 OpenCV 库来调整通过 GPU 处理获得的图像的大小。 处理的关键步骤包括对图像重新采样和反转纵横比。

示例问题:

调整 2000 x 500 的大小并使用 CUDA 将其转换为 500 x 2000 的图像

这是通过以下 OpenCV 命令尝试的:

cv::cuda::resize(d_src,d_dst,cv::Size(500,2000),cv::INTER_CUBIC);

其中d_srcd_dst是合适的 GpuMats,尺寸为 2000 x 500 和 500 x 2000。 允许的最大调整大小是 2000x2000 或 500x500 的正方形。 只要纵横比不反转,该函数就会按预期运行。 我还尝试通过扩展和缩减分两步进行插值:

  • 从 2000x500 到 2000x2000 到 500x2000。

cv::cuda::resize(d_src,d_buffer,cv::Size(2000,2000),cv::INTER_CUBIC); cv::cuda::resize(d_buffer,d_dst,cv::Size(500,2000),cv::INTER_CUBIC);

  • 从 2000x500 到 500x500 再到 500x2000。

cv::cuda::resize(d_src,d_buffer,cv::Size(500,500),cv::INTER_CUBIC); cv::cuda::resize(d_buffer,d_dst,cv::Size(500,2000),cv::INTER_CUBIC);

这两种方法都失败并且不是首选,因为它们消耗了大量额外的 GPU 内存。

有没有人遇到过这个功能的类似问题? 有人可以帮我吗?

先感谢您

没关系。 这个问题可以通过设置size参数为auto来解决:

cv::cuda::resize(d_src,d_dst,d_dst.size(),0,0,cv::INTER_CUBIC);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM