【问题标题】:OpenCV C++ Zoom FunctionOpenCV C++ 缩放功能
【发布时间】:2021-01-31 09:22:25
【问题描述】:

我正在使用 IP 摄像头使用 OpenCV dnn 和 C++ 进行人体检测,我需要实现缩放功能以从 10 米以上的距离检测人体,但我发现使用 C++ 对实时视频进行缩放不存在(如果我错了,请纠正我)。

我已尝试使用以下代码来缩放我的视频:

cv::Mat src, dst, tmp;
tmp = src;
dst = tmp;
pyrUp(tmp, dst, cv::Size(tmp.cols * 2, tmp.rows * 2));
frame.image = dst;

但是,Image Pyramids 没有缩放我的视频。

你能帮我使用缩放功能来实现我的目标吗?

【问题讨论】:

    标签: c++ opencv zooming


    【解决方案1】:

    软件缩放通常被称为选择图像区域(ROI)。您必须选择适当的 ROI 矩形。

    int width = 750;
    int height = 750;
    cv::Rect roi(x, y, width, height);
    cv::Mat dst = src(roi);
    

    【讨论】:

    • 嗨卡洛斯,感谢您的回复。您能否澄清以下内容 - 如何使用 cv::Rect roi(x, y, w, h); 选择整个屏幕区域? ..问的原因是放大后,我需要使用OpenCV拍照。
    • 如果您需要将所有图像作为一个区域,则无需缩放。如果您询问如何从 IP 摄像机拍摄照片,您可以找到很多教程。请查看 OpenCV 教程。
    • 我已经编辑了我的示例以展示如何选择 750x750 像素的 ROI。您只需在 src 图像中选择想要 缩放 的位置,x 和 y 左上角。
    • 嗨 Carlos,我已经在 python 中放大了所有图像区域,但是现在,我在 c++ 中有一个非常有效的代码,这就是为什么我要求你进行整个图像缩放。我已经在 OpenCV 中拍照,但是放大的照片可以在没有变焦闭路电视摄像机的情况下提供更清晰的图像并覆盖更远的距离。您能否告诉我一种在屏幕中选择 750x750 ROI 的方法。 ——
    • 然后编辑您的帖子以添加您的 python 代码并重新表述问题。我不知道你想用 zoom all the image 说什么。
    【解决方案2】:

    如果你想在每个方向将图像抽取 2 倍,你可以这样调用函数: // 指定 fx 和 fy 并让函数计算目标图像大小。

    resize(src, dst, Size(), 0.5, 0.5, interpolation);
    

    【讨论】:

      猜你喜欢
      • 2018-11-05
      • 1970-01-01
      • 2012-08-25
      • 2011-09-13
      • 2015-05-12
      • 1970-01-01
      • 2022-08-23
      • 2011-12-18
      • 1970-01-01
      相关资源
      最近更新 更多