OpenCV的关于图片的一些运用
一、读取图片
通过cv2库中的imread()方法读取图片
代码:
import cv2
a = cv2.imread('1.png')
cv2.imshow('tu',a)
b = cv2.waitKey(4000) # 图片执行时间
cv2.destroyAllWindows() # 关闭所有端口
print("图像形状(shape):",a.shape)
print("图像数据类型(dtype):",a.dtype)
print("图像大小(size):",a.size)
二、读取图片的灰度图
通过cv2.IMREAD_GRAYSCALE将图片改为灰度图
代码:
''' 读取图片的灰度图 '''
import cv2
a = cv2.imread('1.png',cv2.IMREAD_GRAYSCALE) # 对图片执行灰度设置
cv2.imshow('tu',a)
b = cv2.waitKey(4000)
cv2.destroyAllWindows()
print("图像形状(shape):",a.shape)
print("图像数据类型(dtype):",a.dtype)
print("图像大小(size):",a.size)
'''图片保存'''
cv2.imwrite('2.png',a)
三、ROI(对图片进行切片)
将a软复制给b再对高和宽进行切分,切出一块图片出来
代码:
import cv2
a = cv2.imread('1.png')
b = a[20:200,100:300]
cv2.imshow('yuantu',a)
cv2.imshow('qiepian',b)
cv2.waitKey(0)
cv2.destroyAllWindows()
四、读取RGB颜色通道
代码:
import cv2
a = cv2.imread('1.png')
# 第一种方法(分离颜色通道)
a1 = a[:,:,0] # B
a2 = a[:,:,1] # G
a3 = a[:,:,2] # R
# 第二种方法(分离颜色通道)
b,g,r = cv2.split(a)
'''效果一样'''
cv2.imshow('b',a1)
cv2.imshow('g',a2)
cv2.imshow('r',a3)
# 设置窗口显示时间,单位ms
cv2.waitKey(10000)
cv2.destroyAllWindows()
五、图片打码
代码:
import numpy as np
import cv2
a = cv2.imread('1.png')
a[100:200,200:300] = np.random.randint(0,256,(100,100,3)) # 矩阵赋值必须是相同大小
cv2.imshow('masaike',a)
cv2.waitKey(100000)
cv2.destroyAllWindows()
六、图片组合
代码:
import cv2
a = cv2.imread('b.png')
b = cv2.imread('c.png')
b[0:300,0:250] = a[0:300,0:250]
cv2.imshow('b',b)
cv2.imshow('a',a)
cv2.waitKey(100000)
cv2.destroyAllWindows()
七、图片缩放
代码:
import cv2
a = cv2.imread('1.png')
a_new = cv2.resize(a,(200,600)) # 将图片格式改为高为200宽为600
a_new = cv2.resize(a,dsize=None,fx=0.5,fy=0.5) #将图片高和宽缩为原来的一半
cv2.imshow('a',a)
cv2.imshow('a_new',a_new)
cv2.waitKey(10000)
cv2.destroyAllWindows()