c++ - 降低 OpenCV 中的图像分辨率

标签 c++ qt opencv resolution

我正在使用 OpenCV 从 A4Tech 相机捕捉图像。当我尝试降低图像分辨率时,图像断言失败:

CvCapture *camera = cvCreateCameraCapture(1); // 0 is index of Laptop integrated camera
cvSetCaptureProperty( camera, CV_CAP_PROP_FRAME_WIDTH, 160 );
cvSetCaptureProperty( camera, CV_CAP_PROP_FRAME_HEIGHT, 140 );
assert(camera); // This is passed
while(true)
{
    // ....
    IplImage * image=cvQueryFrame(camera);
    assert(image); // This fails. (Line 71 is here)
    // ....
}

输出是:

HIGHGUI ERROR: V4L: Initial Capture Error: Unable to load initial memory buffers.
udpits: main.cpp:71: int main(int, char**): Assertion `image' failed.
Aborted

最佳答案

你的做法似乎是对的,但是OpenCV is known to have issues doing this kind of stuff .你确定你的相机支持160x140吗? Cheese 说我的相机支持 160x120,但是当我选择这种格式时似乎没有任何变化。

不过有一件事,最好始终检查 OpenCV 调用的返回,例如:

CvCapture *camera = cvCreateCameraCapture(1);
if (!camera)
{
    // print error and exit
}

你可以做的一件事是 resize捕获的帧到您想要的分辨率。这并不理想,我知道,你的 CPU 将执行此任务,因此你的应用程序会有一些性能成本,但如果你需要图像具有一定的大小并且 OpenCV 不能很好地播放,那就没有太多你可以做到,除非你愿意对 OpenCV 进行手术。

编辑:

您应该做的一件事是检查这些值是否真的已设置。因此,在设置它们之后,使用 cvGetCaptureProperty() 检索它们。

关于c++ - 降低 OpenCV 中的图像分辨率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8339077/

相关文章:

c++ - 调用迭代函数的次数

c++ - 在 Exception 类中使用 unique_ptr 是否安全

c++ - 并发访问 QTcpSocket 对象

c++ - 显示 txt 文件详细信息

opencv - 需要帮助从 OpenCV 编译该示例

c++ - 如何在模板参数中允许类类型(仅当它有两个基类时)

c++ - 在不使用资源 DLL 的情况下向 MFC 项目添加第二种语言

c++ - Qt::Tool 窗口在应用程序变为非事件状态时消失

python - 如何将 opencv Mat 类型传递给 Python 并取回数组?

python - 从opencv videowriter api运行gstreamer管道命令以将连续图像流式传输到hlssink