36.图像添加滑动条

目录

        1 概念讲解及用处

        2 函数详解

        3 用C++编写代码进行实

        1 概念讲解及用处

        图像窗口滑动条是一种用户界面元素,可以用于在图像窗口中添加可调节的滑动条。滑动条通常用于调整参数或显示数值,并与回调函数关联,当滑动条的数值发生变化时触发相应的事件处理。

        图像窗口滑动条具有以下几个用途:

        调节参数:通过滑动条可以方便地调节算法或图像处理过程中的各种参数,如阈值、卷积核大小等。

        实时交互:滑动条可以提供实时反馈,即时显示参数变化对图像的影响,使用户能够直观地了解不同参数设置的效果。

        用户定制:滑动条可以让用户根据自己的需求调整参数,实现个性化的图像处理和交互体验。

        2 函数详解

        OpenCV中使用cv::createTrackbar()函数来创建图像窗口滑动条。

        该函数的原型如下:

void createTrackbar(const String& trackbarname, const String& winname,
                    int* value, int count,
                    TrackbarCallback onChange = 0,
                    void* userdata = 0);
参数说明:

trackbarname:滑动条的名称。
winname:图像窗口的名称。
value:指向整数变量的指针,用于存储滑动条的当前数值。
count:滑动条的最大值。
onChange:可选参数,滑动条数值变化时的回调函数。
userdata:可选参数,指向用户数据的指针,可以在回调函数中使用。

        3 用C++编写代码进行实现

        以下是一个示例代码,演示了如何使用OpenCV在图像窗口中添加滑动条并改变二值化的阈值:

#include <opencv2/opencv.hpp>

cv::Mat src, src_gray, binary;
int threshold_value = 127;
int max_threshold = 255;

void onThresholdChange(int, void*) {
    cv::threshold(src_gray, binary, threshold_value, max_threshold, cv::THRESH_BINARY);
    cv::imshow("Binary", binary);
}

int main() {
    // 读取图像
    src = cv::imread("image.jpg", cv::IMREAD_COLOR);

    // 转为灰度图像
    cv::cvtColor(src, src_gray, cv::COLOR_BGR2GRAY);

    // 创建窗口
    cv::namedWindow("Binary");

    // 创建滑动条
    cv::createTrackbar("Threshold", "Binary", &threshold_value, max_threshold, onThresholdChange);

    // 初始化二值化图像
    cv::threshold(src_gray, binary, threshold_value, max_threshold, cv::THRESH_BINARY);

    // 显示二值化结果
    cv::imshow("Binary", binary);

    while (true) {
        int key = cv::waitKey(1);
        if (key == 27) { // 按下ESC键退出循环
            break;
        }
    }

    cv::destroyAllWindows();

    return 0;
}

        

        在这段代码中,我们首先包含了OpenCV的头文件,并定义了全局变量 src(原始图像)、src_gray(灰度图像)和 binary(二值化图像)。然后,我们定义了 onThresholdChange 函数作为滑动条的回调函数,该函数在滑动条值变化时会被调用,根据新的阈值对图像进行二值化,并实时显示结果。

        在主函数中,我们读取图像文件并将其转换为灰度图像。然后,创建一个名为 "Binary" 的窗口,并使用 createTrackbar 函数创建一个名为 "Threshold" 的滑动条,并指定回调函数 onThresholdChange。接下来,初始化二值化图像并显示在窗口中。

        最后,通过一个无限循环来等待按键事件,当按下ESC键时,退出循环,关闭窗口。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

别叭叭儿—好好学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值