python-opencv(1)图像的基础操作
文章目录
- 1. 获取图像的属性
- 2. 图像ROI
- 3. 通道的拆分与合并
- 3.1. 通道的拆分
- 3.2. 通道的合并
- 4. 参考
1. 获取图像的属性
- 形状:行、列、通道数
- 像素数目
- 图像的数据类型
shape
可以获取图像的形状,返回包含行数,列数,通道数的元组。
灰度图像 返回行数和列数
彩色图像 返回行数,列数和通道数
size
可以获取图像的像素数目。
灰度图像 返回行数x列数
彩色图像 返回行数x列数x通道数
dtype
返回的是图像的数据类型。
import cv2
img1 = cv2.imread(r"C:\Users\lihuanyu\Desktop\opencv\image\lena256.bmp")
print("形状为:",img1.shape)
print("数目为:",img1.size)
a,b,c = img1.shape
print(a,b,c)
img_color = cv2.imread(r"C:\Users\lihuanyu\Desktop\opencv\image\lenacolor.png")
print("形状为:",img_color.shape)
print("像素数目为:",img_color.size)
print("图像类型:",img_color.dtype)
cv2.imshow("12",img1)
cv2.imshow("color",img_color)
cv2.waitKey(0)
cv2.destroyAllWindows()
结果
形状为: (256, 256, 3)
数目为: 196608
256 256 3
形状为: (512, 512, 3)
像素数目为: 786432
图像类型: uint8
2. 图像ROI
ROI(region of interest),感兴趣区域。
• 从被处理的图像以方框、圆、椭圆、不规则多边形等方式勾勒出需要处理的区域。
• 可以通过各种算子(Operator)和函数来求得感兴趣区域ROI,并进行图像的下一步处理。
#%%ROI
import cv2
import numpy as np
img1 = cv2.imread(r"C:\Users\lihuanyu\Desktop\opencv\image\lenacolor.png")
img2 = cv2.imread(r"C:\Users\lihuanyu\Desktop\opencv\image\girl.bmp")
cv2.imshow("origial",img1)
cv2.imshow("origial1",img2)
face = img1[220:400,250:350]
img2[200:380,250:350] = face
cv2.imshow("become face",img2)
#cv2.imshow("face",face)
#cv2.imshow("reslust",img1)
cv2.waitKey(0)
cv2.destroyAllWindows()
3. 通道的拆分与合并
3.1. 通道的拆分
方法有三
'''
#第一种拆分方法
b = img1[:,:,0]
g = img1[:,:,1]
r = img1[:,:,2]
#第二种处分方法
b,g,r = cv2.split(img1)
#第三种拆分方法
b = cv2.split(img1)[0]
g = cv2.split(img1)[1]
r = cv2.split(img1)[2]
'''
#具体代码
import cv2
img1 = cv2.imread(r"C:\Users\lihuanyu\Desktop\opencv\image\lenacolor.png")
print(img1.shape)
#第一种拆分方法
b = img1[:,:,0]
g = img1[:,:,1]
r = img1[:,:,2]
#第二种处分方法
b,g,r = cv2.split(img1)
#第三种拆分方法
b = cv2.split(img1)[0]
g = cv2.split(img1)[1]
r = cv2.split(img1)[2]
cv2.imshow("blue",b)
cv2.imshow("green",g)
cv2.imshow("red",r)
cv2.waitKey(0)
cv2.destroyAllWindows()
3.2. 通道的合并
通道的合并1
import cv2
img1 = cv2.imread(r"C:\Users\lihuanyu\Desktop\opencv\image\lenacolor.png")
b,g,r = cv2.split(img1)
bgr = cv2.merge([b,g,r])
rgb = cv2.merge([r,g,b])
cv2.imshow("merge_bgr",bgr)
cv2.imshow("merge_rgb",rgb)
cv2.waitKey(0)
cv2.destroyAllWindows()
#%%通道的合并2
import cv2
img1 = cv2.imread(r"C:\Users\lihuanyu\Desktop\opencv\image\lenacolor.png")
rows,cols,chn = img1.shape
b,_,_ = cv2.split(img1)
g = np.zeros((rows,cols),dtype = b.dtype)
r = np.zeros((rows,cols),dtype = b.dtype)
img2 = cv2.merge([b,g,r])
cv2.imshow("merge",img2)
cv2.waitKey(0)
cv2.destroyAllWindows()
4. 参考
Python+OpenCV计算机视觉 - 李立宗