目录

  • 1 OpenCV入门
    • 1.1 如何使用
    • 1.2 图像读入、显示与保存
  • 2 图像处理基础
    • 2.1 图像处理入门基础
    • 2.2 像素处理
    • 2.3 numpy访问像素
    • 2.4 获取图像属性
    • 2.5 感兴趣区域ROI
    • 2.6 通道操作
  • 3 图像运算
    • 3.1 图像加法
    • 3.2 图像融合
    • 3.3 位平面分解
    • 3.4 图像加密和解密
    • 3.5 数字水印
  • 4 色彩空间类型转换
    • 4.1 色彩类型转换
  • 5 几何变换
    • 5.1 图像缩放
    • 5.2 图像翻转
  • 6 阈值处理
    • 6.1 阈值理论知识
    • 6.2 阈值处理实践
  • 7 图像平滑处理
    • 7.1 均值滤波
    • 7.2 方框滤波
    • 7.3 高斯滤波
    • 7.4 中值滤波
  • 8 形态学操作
    • 8.1 图像腐蚀
    • 8.2 图像膨胀
    • 8.3 开运算
    • 8.4 闭运算
    • 8.5 梯度运算
    • 8.6 礼帽操作
    • 8.7 黑帽图像处理
  • 9 图像梯度
    • 9.1 Sobel理论基础
    • 9.2 Sobel算子及函数使用
    • 9.3 Scharr算子及函数使用
    • 9.4 Sobel算子和Scharr算子的比较
    • 9.5 Laplacian算子及函数使用
  • 10 canny边缘检测
    • 10.1 Canny边缘检测原理
    • 10.2 Canny函数及使用
  • 11 图像金字塔
    • 11.1 理论基础
    • 11.2 pyrDown函数及使用
    • 11.3 pyrUp函数及使用
    • 11.4 采样可逆性的研究
    • 11.5 拉普拉斯金字塔
  • 12 图像轮廓
    • 12.1 图像轮廓操作
  • 13 直方图
    • 13.1 直方图的概念
    • 13.2 绘制直方图
    • 13.3 使用OpenCV统计直方图
    • 13.4 绘制OpenCV统计直方图
    • 13.5 使用掩膜的直方图
    • 13.6 掩膜原理及演示
    • 13.7 直方图均衡化原理
    • 13.8 直方图均衡化函数equalizeHist
    • 13.9 subplot函数的使用
    • 13.10 matplotlib.pyplot.imshow函数的使用
    • 13.11 直方图均衡化对比
  • 14 傅里叶变换
    • 14.1 傅里叶变换的理论基础
    • 14.2 numpy实现傅里叶变换
    • 14.3 numpy实现逆傅里叶变换
    • 14.4 高通滤波演示
    • 14.5 OpenCV实现傅里叶变换
    • 14.6 OpenCV实现逆傅里叶变换
    • 14.7 低通滤波示例
通道操作




三:通道操作

1拆分通道


import cv2

img=cv2.imread('图像名')

b = img[ : , : , 0 ]

g = img[ : , : , 1 ]

r = img[ : , : , 2 ]

import cv2

img=cv2.imread('图像名')

b , g , r = cv2.split(img)

import cv2

import numpy as np

a=cv2.imread("image\lenacolor.png")

b,g,r=cv2.split(a)

cv2.imshow("B",b)

cv2.imshow("G",g)

cv2.imshow("R",r)

cv2.waitKey()

cv2.destroyAllWindows()

import cv2

import numpy as np

a=cv2.imread("image\lenacolor.png")

b=cv2.split(a)[0]

g=cv2.split(a)[1]

r=cv2.split(a)[2]

2合并通道

import cv2

import numpy as np

a=cv2.imread("image\lenacolor.png")

b,g,r=cv2.split(a)

m=cv2.merge([b,g,r])

cv2.imshow("merge",m)

cv2.waitKey()

cv2.destroyAllWindows()

import cv2

import numpy as np

a=cv2.imread("image\lenacolor.png")

b,g,r=cv2.split(a)

bgr=cv2.merge([b,g,r])

rgb=cv2.merge([r,g,b])

cv2.imshow("bgr",bgr)

cv2.imshow("rgb",rgb)

cv2.waitKey()

cv2.destroyAllWindows()

import cv2

import numpy as np

a=cv2.imread("image\lenacolor.png")

rows,cols,chn=a.shape

b=cv2.split(a)[0]

g = np.zeros((rows,cols),dtype=a.dtype)  

r = np.zeros((rows,cols),dtype=a.dtype)  

m=cv2.merge([b,g,r])

cv2.imshow("merge",m)

cv2.waitKey()

cv2.destroyAllWindows()

import cv2

import numpy as np

a=cv2.imread("image\lenacolor.png")

rows,cols,chn=a.shape

b= np.zeros((rows,cols),dtype=a.dtype)  

g = cv2.split(a) [1]

r = np.zeros((rows,cols),dtype=a.dtype)  

m=cv2.merge([b,g,r])

cv2.imshow("merge",m)

cv2.waitKey()

cv2.destroyAllWindows()

import cv2

import numpy as np

a=cv2.imread("image\lenacolor.png")

rows,cols,chn=a.shape

b = np.zeros((rows,cols),dtype=a.dtype)  

g = np.zeros((rows,cols),dtype=a.dtype)  

r = cv2.split(a) [2]

m = cv2.merge([b,g,r])

cv2.imshow("merge",m)

cv2.waitKey()

cv2.destroyAllWindows()

视频代码:

#视频 通道拆分
import cv2
img=cv2.imread("lenacolor.png",-1)
b,g,r=cv2.split(img)
cv2.imshow("yuanshi",img)
cv2.imshow("B",b)
cv2.imshow("G",g)
cv2.imshow("R",r)
cv2.waitKey()
cv2.destroyAllWindows()

 

#合并
import cv2
img=cv2.imread("lenacolor.png",-1)
b,g,r=cv2.split(img)
# m=cv2.merge([b,g,r])#正确的合并
#错误的合并举例
m=cv2.merge([r,g,b])#错误的合并
cv2.imshow("yuanshi",img)
cv2.imshow("merge",m)
cv2.waitKey()
cv2.destroyAllWindows()

 

#B G R 其中单一通道和0合并
import cv2
import numpy as np
img=cv2.imread("lenacolor.png",-1)
rows,cols,chn=img.shape
#G R通道为0
b=cv2.split(img)[0]
g=np.zeros((rows,cols),img.dtype)
r=np.zeros((rows,cols),img.dtype)
#B R通道为0
# b=np.zeros((rows,cols),img.dtype)
# g=cv2.split(img)[1]
# r=np.zeros((rows,cols),img.dtype)
#B G通道为0
# b=np.zeros((rows,cols),img.dtype)
# g=np.zeros((rows,cols),img.dtype)
# r=cv2.split(img)[2]
m=cv2.merge([b,g,r])
cv2.imshow("merge",m)
cv2.waitKey()
cv2.destroyAllWindows()

 

#2.16编写程序,演示图像通道拆分及通道值改变对彩色图像的影响
# import cv2
# lena=cv2.imread("lenacolor.png")
# cv2.imshow("lena1",lena)
# b=lena[:,:,0]
# g=lena[:,:,1]
# r=lena[:,:,2]
# cv2.imshow("b",b)
# cv2.imshow("g",g)
# cv2.imshow("r",r)
# lena[:,:,0]=0
# cv2.imshow("lenab0",lena)
# lena[:,:,1]=0
# cv2.imshow("lenab0g0",lena)
# # lena[:,:,2]=0
# # cv2.imshow("lenab0g1",lena)
# cv2.waitKey()
# cv2.destroyAllWindows()

#2.17 编写程序,使用函数cv2.split()拆分图像通道
# import cv2
# lena=cv2.imread("lenacolor.png")
# b,g,r=cv2.split(lena)
# cv2.imshow("B",b)
# cv2.imshow("G",g)
# cv2.imshow("R",r)
# cv2.waitKey()
# cv2.destroyAllWindows()

#2.18编写程序,演示使用函数cv2.merge()合并通道
# import cv2
# lena=cv2.imread("lenacolor.png")
# b,g,r=cv2.split(lena)
# bgr=cv2.merge([b,g,r])
# rgb=cv2.merge([r,g,b])
# cv2.imshow("lena",lena)
# cv2.imshow("bgr",bgr)
# cv2.imshow("rgb",rgb)
# cv2.waitKey()
# cv2.destroyAllWindows()

#2.19编写程序,观察图像的常用属性值
# import cv2
# gray=cv2.imread("lena.bmp",0)
# color=cv2.imread("lenacolor.png")
# print("图像gray属性:")
# print("gray.shape=",gray.shape)
# print("gray.size=",gray.size)
# print("gray.dtype=",gray.dtype)
# print("图像color属性:")
# print("color.shape=",color.shape)
# print("color.size=",color.size)
# print("color.dtype=",color.dtype)