首页 > 解决方案 > 问题设置焦点 C++ OpenCV gstreamer

问题描述

我在 C++ 中遇到 OpenCV 问题并设置焦点值。正如我在一些 stackoverflow 帖子中发现的那样,有一种方法可以通过禁用自动对焦 ( cap.set(39,0)) 来设置焦点并手动设置焦点后缀 ( cap.set(28,focus))。

VideoCapture cap(0);
Mat img;
cap.set(39,0);
double focus = 55;

while (true)
{
    cap.set(28,focus);
    cap.read(img);
    imshow("Image",img);
    int k = waitKey(10);
}
return 0;

问题是,在禁用自动对焦以及设置焦点时出现错误。首先我得到

[ WARN:0] global /home/XYZ/Program/opencv_build/opencv/modules/videoio/src/cap_gstreamer.cpp (1081) open OpenCV | GStreamer warning: Cannot query video position: status=0, value=-1, duration=-1

之后我一直都在调用“set”函数

[ WARN:0] global /home/lukas/Program/opencv_build/opencv/modules/videoio/src/cap_gstreamer.cpp (1371) setProperty OpenCV | GStreamer warning: GStreamer: unhandled property

有解决方案吗?

我还听说过使用 ffmpeg 代替 gstreamer 的方法,但我不知道我是如何做到这一点的,以及这是否会导致任何性能下降。

谈到性能下降,我看到的最后一个选项是使用命令行拍照,然后将其蒸到程序中

我在 Ubuntu 上使用来自 GitHub (4.5) 的最新版本的 OpenCV,并在构建 ffmpeg 标志时激活...

编辑:这里的答案似乎不是最新的。提到的更改在我拉的主人中,但它仍然不起作用

如果有人可以帮助我,那就太好了

克努特

标签: c++opencvgstreamer

解决方案


推荐阅读