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

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

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

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

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

  • mat数据结构
  • 图像通道的分割与融合
  • 小说一下

mat数据结构

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

C++字段 说明 Python中ndarray字段
dims 维度 ndim
rows 行数 shape[0]
cols 列数 shape[1]
depth 像素的位深 dtype字母后的数字
channels 通道数 shape[2]
size 矩阵大小 size
type dep + dt + chs CV_8UC3 dtype
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)

【OpenCV学习】Mat数据结构与图像通道的分割与融合_第1张图片
再看一下图片属性:

【OpenCV学习】Mat数据结构与图像通道的分割与融合_第2张图片
完美配对,然后一般的图片又是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()

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

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

小说一下

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

你可能感兴趣的:(OpenCV从入门到放弃,opencv,计算机视觉,学习)