当前位置: 首页 > article >正文

《opencv实用探索·十五》inRange二值化图像

opencv接口如下:

void inRange(InputArray src, InputArray lowerb, InputArray upperb, OutputArray dst);

函数实现二值化功能,主要是将在两个阈值内的像素值设置为白色(255),而不在阈值区间内的像素值设置为黑色(0)

参数1:输入要处理的图像,可以为单通道或多通道。
参数2:包含下边界的数组或标量。
参数3:包含上边界数组或标量。
参数4:输出图像,与输入图像src 尺寸相同且为CV_8U 类型。
请注意:该函数输出的dst是一幅二值化之后的图像。

单通道灰度图demo:

#include <opencv2/opencv.hpp>

int main() {
    cv::Mat grayImage = cv::imread("gray_image.jpg", cv::IMREAD_GRAYSCALE);

    if (grayImage.empty()) {
        std::cerr << "Error: Could not read the image." << std::endl;
        return -1;
    }

    // 定义灰度范围(上限和下限都设置为相同的值,表示提取该灰度值)
    int lowerBound = 100;
    int upperBound = 200;

    // 创建输出图像
    cv::Mat binaryImage;

    // 应用灰度范围阈值
    cv::inRange(grayImage, lowerBound, upperBound, binaryImage);

    // 显示原图和二值图像
    cv::imshow("Original Image", grayImage);
    cv::imshow("Binary Image", binaryImage);

    cv::waitKey(0);
    return 0;
}

三通道图像demo:

#include <opencv2/opencv.hpp>

int main() {
    cv::Mat colorImage = cv::imread("color_image.jpg");

    if (colorImage.empty()) {
        std::cerr << "Error: Could not read the image." << std::endl;
        return -1;
    }

    // 定义颜色范围
    cv::Scalar lowerBound(100, 0, 0);  // BGR格式,最小值
    cv::Scalar upperBound(255, 50, 50);  // BGR格式,最大值

    // 创建输出图像
    cv::Mat binaryImage;

    // 应用颜色范围阈值
    cv::inRange(colorImage, lowerBound, upperBound, binaryImage);

    // 显示原图和二值图像
    cv::imshow("Original Image", colorImage);
    cv::imshow("Binary Image", binaryImage);

    cv::waitKey(0);
    return 0;
}

上面代码中注意点:
(1)opencv中三通道图像按BGR排列,不是RGB
(2)上面案例中B通道(100-255)范围设置1,G通道(0-50)范围设置1,R通道(0-50)范围设置1

在这里插入图片描述

http://www.kler.cn/a/162548.html

相关文章:

  • Windows C++ TCP/IP 两台电脑上互相传输字符串数据
  • Cyberchef配合Wireshark提取并解析HTTP/TLS流量数据包中的文件
  • Java面向对象高级2
  • UDP协议和TCP协议之间有什么具体区别?
  • @ComponentScan:Spring Boot中的自动装配大师
  • python: postgreSQL using psycopg2 or psycopg
  • 《Spring Cloud Alibaba 从入门到实战》理论知识篇
  • 前端大文件上传webuploader(react + umi)
  • QT作业2
  • Scala 从入门到精通
  • 【前端】没有了element时,怎么实现一个自己的form表单组件和表单校验(用法参考el-form)
  • 这些接口自动化测试工具如果不知道,就真out了!
  • unity 2d 入门 飞翔小鸟 小鸟跳跃 碰撞停止挥动翅膀动画(十)
  • 机器学习-分类问题
  • Tmux中使用Docker报错 - 解决方案
  • Windows下使用CMD修改本地IP
  • SQL自学通之简介
  • PyQt6 QTimeEdit时间控件
  • YOLOv5独家原创改进:SPPF自研创新 | SPPF与感知大内核卷积UniRepLK结合,大kernel+非膨胀卷积提升感受野
  • 7天用Go实现分布式缓存
  • 简谈MySQL的binlog模式
  • ALTERNET STUDIO 9.1 Crack
  • 啃下这50道笔试题,你就是SQL专家!(附答案,收藏备用)
  • 元宇宙vr党建云上实景展馆扩大党的影响力
  • 将 ONLYOFFICE 协作空间的公共房间嵌入到网页
  • 复杂sql分析 以及 索引合并