Ubuntu系统VScode实现opencv(c++)图像读取与显示

        在 C++中,使用 OpenCV 库进行图像读取与显示是一项基础且常见的任务。OpenCV 提供了简单易用的函数来处理这些操作。以下是如何用 C++ 实现图像读取与显示的简介:

1.图像读取

        cv::imread 是 OpenCV 中用于读取图像文件的函数。它支持多种图像格式(如 JPEG、PNG、BMP 等),并将图像加载到 cv::Mat 对象中。以下是关于 cv::imread 的详细说明,包括其参数。

filename类型:std::string;描述:要读取的图像文件的路径。可以是相对路径或绝对路径。

示例:"path/to/image.jpg" 或 "/home/user/images/image.png"

flags类型:int;描述:指定读取图像的方式。默认值为 cv::IMREAD_COLOR。

常见选项:

IMREAD_COLOR(默认值):以彩色模式读取图像。图像的透明通道(如果有)将被忽略。

IMREAD_GRAYSCALE:以灰度模式读取图像。图像将被转换为单通道灰度图像。

IMREAD_UNCHANGED:以原始格式读取图像,包括透明通道(如果有)。

IMREAD_ANYCOLOR:尝试以彩色模式读取图像,但如果失败,则尝试以灰度模式读取。

IMREAD_ANYDEPTH:尝试以原始深度读取图像(例如,16位或32位图像)。

IMREAD_IGNORE_ORIENTATION:忽略图像的 EXIF 信息,不旋转图像。

cv::Mat image = cv::imread("path/to/your/image.jpg", cv::IMREAD_COLOR);
if (image.empty()) {
    std::cerr << "Error: Image cannot be loaded." << std::endl;
    return -1;
}

2.图像显示

        cv::imshow 是 OpenCV 中用于在窗口中显示图像的函数。它将图像数据渲染到一个窗口中,方便用户查看图像内容。以下是关于 cv::imshow 的详细说明,包括其参数、返回值以及常见用法。

winname类型:const String&;描述:窗口的名称,是一个字符串。如果窗口已经存在,则会更新该窗口的内容;如果窗口不存在,则会创建一个新的窗口。

mat类型:InputArray

描述:要显示的图像数据。InputArray 是一个通用的输入数组类型,可以是 cv::Mat、cv::Mat_<T>或其他兼容的类型。

cv::imshow("Image Window", image); // 在窗口中显示图像

3.图像显示窗口

在 OpenCV 中,cv::namedWindow 函数用于创建一个窗口,用于显示图像或视频帧。该函数的第二个参数是一个标志,用于指定窗口的属性。
WINDOW_AUTOSIZE:窗口大小自动调整为与显示的图像大小一致。

WINDOW_NORMAL:窗口大小可以由用户手动调整。

WINDOW_KEEPRATIO:在调整窗口大小时保持图像的宽高比。

WINDOW_FREERATIO:在调整窗口大小时,图像的宽高比可以自由改变。

WINDOW_GUI_EXPANDED:使用扩展的 GUI 样式,支持更多功能(如滚动条)。

可以通过按位或操作符(|)组合多个标志。

完整示例代码

#include <opencv2/opencv.hpp>
#include <iostream>

int main() {
    // 读取图像
    cv::Mat image = cv::imread("path/to/your/image.jpg");
    if (image.empty()) {
        std::cerr << "Error: Image cannot be loaded." << std::endl;
        return -1;
    }

    // 创建窗口并显示图像
    cv::namedWindow("Image Window", cv::WINDOW_AUTOSIZE);
    cv::imshow("Image Window", image);

    // 等待键盘事件
    cv::waitKey(0);
    cv::destroyAllWindows();

    return 0;
}

运行结果:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值