daocaorends 2019-02-19 16:42 采纳率: 0%
浏览 196

opencv中 vcap >> frame的分辨率问题,vcap抓的是672*380,而保存图片时,却是672*570,为什么

          vcap >> frame;
          imwrite("1.jpg",frame);

图片说明

这该怎么改

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-08 00:15
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    在OpenCV中,vcap >> frame; 这行代码的作用是将摄像头图像通过 cv::Mat 类型的数据结构进行转换,并将其保存为图片。这个操作会根据摄像头的实际分辨率来决定输出的图片大小。

    如果您的摄像头分辨率是 672x380(即宽高比为4:3),那么当您使用以下命令:

    vcap >> frame;
    imwrite("1.jpg",frame);
    

    则输出的图片宽度和高度将会被设置为 672 和 570 分别对应于 4:3 的比例。这是因为 OpenCV 使用了标准的宽高比来定义图片尺寸,所以即使原始摄像头分辨率不同,OpenCV 输出的图片也会保持相同的宽高比。

    如果您想要改变输出图片的分辨率,可以考虑使用 resize() 或者 copyMakeBorder() 函数对原始图像进行调整。例如:

    // 获取摄像头图像
    cv::Mat camera_image = vcap >> frame;
    
    // 调整图片的宽度和高度,使其与目标分辨率匹配
    camera_image.resize(672, 570); // 指定新的宽度和高度
    
    // 将调整后的图像保存到文件
    imwrite("1.jpg", camera_image);
    

    注意:在实际应用中,您可能需要根据具体的场景和需求来选择合适的处理方式。例如,如果需要保持原始分辨率不变,您可以尝试修改摄像头参数或者使用其他工具来进行图像压缩等处理。

    评论

报告相同问题?