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

c++视觉--通道分离,合并处理,在分离的通道中的ROI感兴趣区域里添加logo图片

c++视觉–通道分离,合并处理

通道分离: split()函数

#include <opencv2/opencv.hpp>int main() {// 读取图像cv::Mat image = cv::imread("1.jpg");// 检查图像是否成功加载if (image.empty()) {std::cerr << "Error: Could not read the image." << std::endl;return -1;}// 分离通道std::vector<cv::Mat> channels;cv::split(image, channels);// channels[0] 是蓝色通道// channels[1] 是绿色通道// channels[2] 是红色通道// 显示原始图像和分离的通道cv::imshow("Original Image", image);cv::imshow("蓝色 Channel", channels[0]);cv::imshow("绿色 Channel", channels[1]);cv::imshow("红色 Channel", channels[2]);// 等待按键cv::waitKey(0);return 0;
}

在这里插入图片描述

再将拆开后的单通道进行对比度处理后进行合并

#include <opencv2/opencv.hpp>int main() {// 读取图像cv::Mat image = cv::imread("1.jpg");// 检查图像是否成功加载if (image.empty()) {std::cerr << "Error: Could not read the image." << std::endl;return -1;}// 分离通道std::vector<cv::Mat> channels;cv::split(image, channels);// channels[0] 是蓝色通道// channels[1] 是绿色通道// channels[2] 是红色通道// 显示原始图像和分离的通道cv::imshow("Original Image", image);cv::imshow("蓝色 Channel", channels[0]);cv::imshow("绿色 Channel", channels[1]);cv::imshow("红色 Channel", channels[2]);for (cv::Mat& channel : channels) {// 在这里可以对每个通道进行你想要的处理cv::equalizeHist(channel, channel);}cv::imshow("Original Image", image);cv::imshow("蓝色对比度增加 Channel", channels[0]);cv::imshow("绿色对比度增加 Channel", channels[1]);cv::imshow("红色对比度增加 Channel", channels[2]);// 合并通道cv::Mat processedImage;cv::merge(channels, processedImage);// 显示原始图像和处理后的图像cv::imshow("合并 Image", processedImage);// 等待按键cv::waitKey(0);return 0;
}

在这里插入图片描述

在分离的通道中的ROI感兴趣区域里添加logo图片

#include <opencv2/opencv.hpp>int main() {// 读取图像cv::Mat image = cv::imread("1.jpg");cv::Mat logo = cv::imread("4.jpg",0);// 检查图像是否成功加载if (image.empty()) {std::cerr << "Error: Could not read the image." << std::endl;return -1;}// 分离通道std::vector<cv::Mat> channels;cv::split(image, channels);// channels[0] 是蓝色通道// channels[1] 是绿色通道// channels[2] 是红色通道// 显示原始图像和分离的通道cv::imshow("Original Image", image);cv::imshow("蓝色 Channel", channels[0]);cv::imshow("绿色 Channel", channels[1]);cv::imshow("红色 Channel", channels[2]);for (cv::Mat& channel : channels) {// 在这里可以对每个通道进行你想要的处理cv::equalizeHist(channel, channel);}cv::imshow("Original Image", image);cv::imshow("蓝色对比度增加 Channel", channels[0]);cv::imshow("绿色对比度增加 Channel", channels[1]);cv::imshow("红色对比度增加 Channel", channels[2]);//在分离的通道中的ROI感兴趣区域里添加logo图片cv::Rect roiRect(100, 250, logo.cols, logo.rows);// 提取感兴趣区域(ROI)cv::Mat imageROI = channels[0](roiRect);// 将logo复制到感兴趣区域logo.copyTo(imageROI);cv::imshow("蓝色对比度增加logo区域 Channel", channels[0]);// 合并通道cv::Mat processedImage;cv::merge(channels, processedImage);// 显示原始图像和处理后的图像cv::imshow("合并 Image", processedImage);// 等待按键cv::waitKey(0);return 0;
}

在这里插入图片描述

http://www.lryc.cn/news/188500.html

相关文章:

  • python爬虫:多线程收集/验证IP从而搭建有效IP代理池
  • 阻塞队列以及阻塞队列的一个使用
  • kafka的请求处理机制
  • Linux系统管理:虚拟机Centos Stream 9安装
  • 5种排序算法
  • TCP/IP(七)TCP的连接管理(四)
  • LeetCode【84】柱状图中的最大矩形
  • C++:关于模拟实现vector和list中迭代器模块的理解
  • HTML 笔记 表格
  • 3.1 C/C++ 使用字符与指针
  • [代码学习]einsum详解
  • 女性必看——“黄体破裂”到底有多可怕?
  • colab切换目录的解决方案
  • 基于SSM的生活缴费系统的设计与实现
  • 【WebLogic】WebLogic 2023年7月补丁导致JVM崩溃的解决方案
  • 简单OpenSL ES学习
  • Linux网络编程- struct packet_mreq setsockopt()
  • C++学习day4
  • 从零学算法54
  • Logback日志框架使用详解以及如何Springboot快速集成
  • Nginx概念
  • vim基础指令(自用)
  • 【centos7安装ElasticSearch】
  • ElementPlus Switch 开关基础使用
  • Spring Boot:自定义注解--annotation
  • WIFI频段
  • Java的引用详解与示例
  • c++视觉处理---霍夫变换
  • el-table 边框颜色修改 简单有效!
  • Zabbix第二部分:基于Proxy分布式部署实现Web监控和Zabbix HA集群的搭建