【OpenCV学习】Mat数据结构与图像通道的分割与融合

Opencv学习——Mat矩阵操作 Opencv2出现以后图像的操作可以不用再用指针的形式啦,用Mat类矩阵能够很方便的进行矩阵运算。Mat类包含两部分:矩阵头和指向矩阵像素值的指针。一般复制操作只是复制了矩阵头和指向矩阵的指针,并不会复制矩阵本身的数据。一些基本操作如下: Mat A, C; //只创建了矩阵头 A = imread(argv[1], CV_LOAD_IMAGE_COLOR); //创建方法 阅读详情

🌈据说,看我文章时 关注、点赞、收藏 的 帅哥美女们 心情都会不自觉的好起来。

前言:
🧡作者简介:大家好我是 user_from_future ,意思是 “ 来自未来的用户 ” ,寓意着未来的自己一定很棒~
✨个人主页:点我直达,在这里肯定能找到你想要的~
👍专栏介绍:OpenCV从入门到放弃 ,一个学习OpenCV的专栏~

专栏文章直链:
【OpenCV学习】OpenCV的色彩空间
【OpenCV学习】初识OpenCV其二
【OpenCV学习】初识OpenCV人生苦短,我用python

Mat数据结构与图像通道的分割与融合

mat数据结构

这些了解了解即可,不用太在意。

C++字段说明Python中ndarray字段
dims维度ndim
rows行数shape[0]
cols列数shape[1]
depth像素的位深dtype字母后的数字
channels通道数shape[2]
size矩阵大小size
typedep + dt + chs CV_8UC3dtype
data存放数据data

ndarray 的字段展示:

from cv2 import cv2
img = cv2.imread('./cat.jpeg')
print(img.ndim)
print(img.shape)
print(img.dtype)
print(img.size)
print(img.data)

在这里插入图片描述
再看一下图片属性:

在这里插入图片描述
完美配对,然后一般的图片又是RGB图片,读出来是BGR,是三通道图片,矩阵大小就是 821 * 617 * 3 = 1519671 ,基本上所有的 Mat 数据结构都有了。

图像通道的分割与融合

from cv2 import cv2
import numpy as np
img = np.zeros((200, 200, 3), np.uint8)
# 分割通道
b, g, r = cv2.split(img)
b[10: 100, 10: 100] = 255
g[10: 100, 10: 100] = 255
# 合并通道
img2 = cv2.merge((b, g, r))
cv2.imshow('img', np.hstack((b, g)))
cv2.imshow('img2', np.hstack((img, img2)))
cv2.waitKey(0)
cv2.destroyAllWindows()

会产生两组对比:第一组是蓝、绿通道的对比,第二组是原图和通道处理后的图片。
当中没有分割线,但很明显这是两个图片在一块,在单通道内,只能看到黑白灰的颜色,但通道合并后,就能看到更改颜色产生的效果:

在这里插入图片描述

小说一下

今天是520节日哈,少点学习,多点女朋友~😁

OpenCV图像通道处理实战:单通道转三通道与伪彩色可视化 图像通道是计算机视觉中表示像素颜色信息的基础概念,通常由B、G、R三个分量构成,决定了图像在内存中的存储结构与颜色呈现。其核心原理在于多维数组的数据组织,通过操作通道数据可以实现丰富的图像处理效果。这项技术的工程价值在于,它能将算法生成的单通道结果(如边缘检测图、二值化图)转换为兼容性更强的三通道格式,或通过伪彩色映射增强可视化对比度,广泛应用于医学影像、遥感分析和深度学习结果的可视化等场景。本文以OpenCV库为例,详细解析了`cv::cvtColor`和`cv::merge`等函数在实现**灰度复制** 阅读详情

相关推荐

C#工业质检中的OpenCV图像分割实战

图像分割是计算机视觉的基础技术,通过像素级分类实现目标区域提取。其核心原理是根据颜色、纹理等特征差异划分图像区域,在工业检测中具有重要应用价值。传统分割算法如阈值法、分水岭算法在金属表面检测时面临反光、低对比度等挑战。通过结合LAB色彩空间转换与K-means聚类技术,可有效提升缺陷识别准确率。本文以EmguCV为例,详解如何构建包含去噪、色彩空间转换、多特征融合的工业级分割方案,最终在金属零部件检测中实现98.7%的准确率。方案涉及非局部均值去噪、CLAHE增强等关键技术,并提供了C#实现代码与参数调优经

weixin_34396902的博客 644

Mat的属性以及通道的合并与分离

cv2.split()和cv2.merge()

ShawLee0925的博客 1259

超越基础教程:用LabVIEW OpenCV的Mat类玩转矩阵运算与图像算法融合

本文深入探讨了如何利用LabVIEW与OpenCV的Mat类实现高效的矩阵运算与图像算法融合。通过指针操作、内存共享和混合编程策略,开发者可以在工业视觉检测、医学影像分析等领域突破性能瓶颈。文章详细介绍了Mat类的高阶初始化、内存管理及混合编程优化技巧,帮助中高级开发者提升处理效率。

weixin_29189373的博客 372

OpenCV3.4.0学习笔记(二)——cv::Mat的代数运算、变形与分割

cv::Mat的代数运算、变形与分割 关于cv::Mat最基础的内存结构与元素访问笔记在以下博文中: OpenCV3.4.0学习笔记(一)——cv::Mat的内存结构与访问 可以自由读写cv::Mat数组中的任一元素后,以下考虑 cv::Mat 的一些常用操作。 这里将常用操作分为三类: 代数运算 变形 分割 代数运算 cv::Mat 的代数运算接近矩阵运算,以下给出常用的几种代数运算代码。...

ChiKuo_Z的博客 4033

OpenCV数据流转核心:指针、Vector与Mat的高效互转与切片融合实践

本文深入探讨了OpenCV中Mat、vector与指针之间的高效数据转换与切片技术,重点解析了深浅拷贝、内存管理及分块处理等核心概念。通过实战案例展示了如何优化数据流转管道,提升计算机视觉任务的处理效率,特别是在大尺寸图像处理和模型部署场景中的应用价值。

weixin_26861329的博客 382

Python图像融合处理和 ROI 区域绘制基础

该函数的作用是将一个图像从一个颜色空间转换到另一个颜色空间,其中,RGB 是指 Red、Green 和 Blue,一副图像由这三个通道(channel)构成;在日常生活中,我们看到的大多数彩色图像都是 RGB 类型,但是在图像处理过程中,常常需要用到灰度图像、二值图像、HSV、HSI 等颜色。下面代码对比了九种常见的颜色空间,包括 BGR、RGB、GRAY、HSV、YCrCb、HLS、XYZ、LAB 和 YUV,并循环显示处理后的图像。其中灰度图像返回行数和列数,彩色图像返回行数、列数和通道数。

Vegetable的博客 672

Opencv学习---图像通道分割(split)与合并(merge)

功能简述: 实现彩色图像三通道分离,分别单通道操作,之后再合并三通道生成新的彩色图像。 代码如下: #include <opencv2/opencv.hpp> #include <iostream> int main(int argc, char** argv) { cv::Mat src, dst; src = cv::imread("D:/V...

君子性非异 5177

RPCA模型及GoDec算法

一、基础知识 在线性代数中,秩的物理意义是矩阵中最大的不相关的向量个数,因此秩可以用来度量相关性;而在图像处理中,秩就可以理解为图像中所包含的信息的丰富程度。图片中比较突兀的成分,会增加图像矩阵的秩,一幅清晰的自然图像其数据矩阵往往是低秩或者近似低秩的,这是因为其中的图像信息有很大的相关性,但如果图像中引入噪声,那么存在随机幅值任意大但是分布稀疏的误差破坏了原有数据的低秩性。 低秩矩阵:如果AAA是一个m×nm×nm×n的矩阵,rank(A)rank(A)rank(A)是矩阵AAA的秩,如果rank(A)

小席的学习日志 7690

18_OpenCV实现矩阵的拆分与合并

矩阵的拆分可以使用

sinat_41752325的博客 4262

Elsevier期刊LaTeX双栏模板(cas-dc)实战:从Overleaf配置到投稿全流程

本文详细介绍了Elsevier期刊LaTeX双栏模板(cas-dc)在Overleaf平台上的配置与使用全流程,包括模板结构解析、标题与作者信息规范、摘要与关键词特殊格式、正文写作技巧、参考文献管理以及投稿前检查清单。特别针对Elsevier期刊投稿需求,提供了从模板安装到最终投稿的实用指南,帮助研究者高效完成论文排版工作。

weixin_28455801的博客 1323

从零开始掌握Python机器学习:七步教程 基础篇

前言 「开始」往往是最难的,尤其是当选择太多的时候,一个人往往很难下定决定做出选择。本教程的目的是帮助几乎没有 Python 机器学习背景的新手成长为知识渊博的实践者,而且这个过程中仅需要使用免费的材料和资源即可。 第一步:基本 Python 技能 如果我们打算利用 Python 来执行机器学习,那么对 Python 有一些基本的了解就是至关重要的。 首先,你需要安装 Python。因为我们后...

hcgx2018的博客 1615

OpenCV实现图像通道分割与组合

计算机视觉中处理的图片多是BGR三通道图像,有时根据需要会将图像按照通道分割,有时会将多个通道的图像进行组合成一幅图像,特别是做图像层融合时。OpenCV提供了两个函数split()和merge()来实现图像的通道分割和合并。通道分割split():vector&lt;Mat&gt; channels; split(image1, channels);//分割image1的通道 split(ima...

Shhuikai的博客 4596

从数据到图片:手把手构建FMCW雷达人体行为识别数据集(行走、跌倒、喝水等6类动作)

本文详细解析了如何利用FMCW雷达构建人体行为识别数据集,涵盖行走、跌倒、喝水等6类动作。通过多普勒特征可视化、图像标准化处理和自动化流水线设计,将原始雷达信号转化为高质量时频图像数据集,为智能家居和健康监护等应用提供可靠数据支持。

weixin_30706691的博客 385

Python机器视觉--OpenCV入门(重要)--OpenCV数据结构--Mat

Mat是OpenCV在C++语言中用来表示图像数据的一种数据结构.在python中转化为numpy的ndarray.Mat由header和data组成, header中记录了图片的维数, 大小, 数据类型等数据.

寒江之雪,披蓑独钓的博客 3216

Python和Spyder:一个完美的编程组合

而Spyder作为一个专门为科学计算和数据分析而设计的IDE,提供了高效的开发环境和丰富的工具。无论是初学者还是专业开发者,Python和Spyder都能满足他们的需求,并为他们的工作带来便利和效率。本文将探讨Python和Spyder之间的关系,以及它们如何相互配合,提供一流的编程体验。每个工具都有其特定的优势和适用场景,开发者可以根据自己的需求选择合适的工具。而Spyder作为一个专门为科学计算而设计的IDE,提供了编写、调试和执行Python代码的环境。

CodeHeroicX的博客 1124

ESP32-IDF开发之旅 基础篇⑨ ESP-IDF的FreeRTOS任务间通信和同步

本文介绍了FreeRTOS任务间通信中的队列机制,重点讲解了队列的创建、发送和接收数据的API使用方法。文章提供了详细的技术说明和示例代码,包括xQueueCreate、xQueueSend、xQueueReceive等核心函数的参数说明和返回值解释。通过一个2生产者+1消费者的实际案例,展示了如何在ESP-IDF环境下使用FreeRTOS队列实现任务间通信。示例中包含了数据发送失败处理和接收数据验证等实用技巧,为开发者提供了可参考的实现模式。

单片机菜鸟哥的博客 430

全网首发!!!opencv三通道Mat点云转halcon点云—HTuple类型

将OpenCV中的三通道Mat(通常用于存储图像数据,包括RGB三通道)转换为Halcon中的点云数据时,并直接转换为Halcon特有的HTuple类型(HTuple是Halcon中用于存储和处理数据的强大容器

m0_66701835的博客 1300

台球 PCOL:极致物理还原的网页斯诺克引擎(附源码深度解析)

*完整源码地址**:[https://github.com/billiards/pcol-core](https://github.com/billiards/pcol-core)(包含详细文档与示例)通过这个项目,我们不仅创建了一个游戏,更构建了一个**可扩展的物理引擎框架**,为网页端复杂物理模拟开辟了新的可能性。**在线体验**:[https://pcol.billiards](https://pcol.billiards)(支持移动端触控操作)clone.velocity.x *= -0.92;

Loving_enjoy的博客 2802

opencv-颜色通道的分离和合并

opencv用mat这种数据结构来表示图片,C++中是用mat来保存图片,python中把mat转化成了numpy的ndarray。

weixin_50170972的博客 568

第五节_PySide6基本窗口控件_主窗口和标签

本文介绍了PySide6中主窗口和标签控件的使用。主要内容包括: 窗口控件分类: QWidget是基础窗口部件,可作为独立窗口或子部件 QMainWindow提供标准应用程序框架,包含菜单栏、工具栏等 QDialog用于对话框,支持模态交互 主窗口创建: 演示了如何创建QMainWindow子类 实现了窗口居中、设置图标、状态栏等功能 提供了窗口几何信息的获取方法 QLabel标签控件: 继承自QFrame类 用于显示文本或图像 文章通过代码示例详细说明了主窗口的创建和使用方法,包括位置控制、图标设置等常见

su桥木的博客 1024

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

02- OpenCV绘制图形及图像算术变换 (OpenCV系列) (机器视觉)

OpenCV用的最多的色彩空间是HSV方便OpenCV做图像处理img.view# 浅拷贝img.copy# 深拷贝cv2.split# b, g, r 都是数组mergecvtColor画矩形画圆画椭圆绘制中文 opencv本身不支持, 因为没有中文字体.我们可以借助pillow来实现绘制中文new_img =cv2.add图像的加法运算, 图片大小需要一致new_img =(new_cat, dog) 图像的减法运算cv2.imshow# 图片显示# 图像融合。

March_A的博客 825

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

opencv真货第二节

python+Opencv真货第二节 OpenCV基础知识和绘制图形 1.OpenCV的色彩空间 1)RGB和BGR 2).HSV,HSL和YUV 2.OpenCV的重要数据结构--Mat 1).Mat的组成 2).Mat拷贝 3).图像的分割与融合

qq_40694323的博客 317

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

直方图与通道分割

直方图实在是这个世界上最有用的工具之一了,做做统计 做做均衡化,干啥都要用到它。 下面给出自己用的一段简单的程序,将图像的H分量分离出来计算直方图:H分量分成16个等级 int hsize = 16; float hranges[] = {0,180}; const float* phranges = hranges; int ch[] = {0, 0}; Mat hsv_src, h

ROS学习VS图像处理 1673

OpenCV 04(通道分离与合并 | 绘制图形)

split(mat)分割图像的通道- merge((ch1,ch2, ch3)) 融合多个通道。

darren_pty 1062

OpenCV中IplImage* ,CvMat 与新版OpenCV中 Mat类型的相互转化

IplImage -> cv::Mat Ex.  IplImage* pImg = cvLoadImage("lena.jpg"); cv::Mat img(pImg,0); //0是不复制影像,也就是pImg与img的data共用同个记忆体位置,header各自有

lingtianyulong的专栏 1676

Opencv读取图像,图像通道分离,图像通道融合

// // Created by cynthia on 2021/11/25. // #include <sys/types.h> #include <sys/stat.h> #include "unistd.h" #include "dirent.h" #include <iostream> #include <iostream> #include <direct.h> #include <opencv2/opencv.hpp> u

爱哭鬼 306
上一篇: 【OpenCV学习】OpenCV的色彩空间
下一篇: 一文让你学会做C语言变量指针题
user_from_future
博客等级 码龄5年 4067粉丝 115原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值