opencv split图像通道分割

本文介绍使用OpenCV库对图像进行分通道处理,包括如何将多通道图像分解为单通道图像组,以及如何通过merge()函数将单通道图像重组回多通道图像。演示了从图像中分离红、绿、蓝通道,并展示每种颜色通道的独立图像。

spilt()将多通道图分为单通道图组,merge()实现相反功能;

#include <QCoreApplication>
#include <opencv2/opencv.hpp>
int main(int argc, char *argv[])
{

    cv::Mat img;
   // std::vector<cv::Mat> mv; // vector形式
    cv::Mat mv[3]; // mat组形式
    img = cv::imread("opencv.jpg");

    cv::split(img,mv);

    cv::imshow("core_process",img);
    cv::imshow("r",mv[0]);
    cv::imshow("g",mv[1]);
    cv::imshow("b",mv[2]);

    cv::waitKey();
    return 0;
}
### 修改图像的BGRA通道 对于带有透明度信息的图像,即具有四个通道(蓝、绿、红和Alpha)的图片,在OpenCV中可以通过`cv2.split()`函数来分离这些通道,并通过`cv2.merge()`重新组合它们[^1]。 当读取一张PNG格式或其他支持alpha通道的文件时,如果该图确实含有透明度,则会自动加载为四通道模式。下面展示一段用于修改BGRA各层颜色强度并调整不透明度的例子: ```python import cv2 import numpy as np # 加载含Alpha通道图像 img_bgra = cv2.imread('path_to_your_image_with_alpha.png', cv2.IMREAD_UNCHANGED) # 显示原始图像 cv2.imshow('Original Image', img_bgra) cv2.waitKey(0) # 将图像分割成不同的通道 b, g, r, a = cv2.split(img_bgra) # 创建掩模以仅影响特定区域;此处假设要改变整个画面的颜色属性 mask = np.ones_like(a)*255 # 白色全通滤波器作为例子 # 对各个色彩通道应用变换 - 此处简单地增加亮度 new_blue_channel = cv2.add(b, mask//4) new_green_channel = cv2.add(g, mask//4) new_red_channel = cv2.add(r, mask//4) # 更改Alpha通道值 (降低整体透明度为例) modified_alpha = cv2.subtract(a, mask//8) # 合并已编辑过的通道回到单张图像内 merged_img = cv2.merge((new_blue_channel, new_green_channel, new_red_channel, modified_alpha)) # 展示最终效果 cv2.imshow('Modified BGRA Channels', merged_img) cv2.waitKey(0) cv2.destroyAllWindows() ``` 这段代码首先从指定路径加载了一幅包含Alpha通道图像,接着利用`split()`方法将其分解为独立的蓝色(B),绿色(G),红色(R)以及Alpha(A)四个平面。之后通过对每个彩色分量执行加法运算实现了简单的增亮操作,而减去一部分Alpha值得到了不同程度上的半透明白化视觉感受。最后再调用`merge()`将所有经过处理的数据合成为一个新的多通道数组表示形式以便于后续显示或保存[^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值