目录
1.读取图像imread() 将图片转换为矩阵,返回该矩阵的值
5.imwrite(filename, image) 将image复制到filename处(文件或者完整路径)
6.b,g,r = cv2.split(image) 将图像数据拆分成三份,蓝色、绿色、红色。
7.image_new = cv.merge([b, g, r]) 将b,g,r三份合并
一、图像处理基本操作
1.读取图像imread() 将图片转换为矩阵,返回该矩阵的值
retval = cv2.imread(filename)
filename也就是图片文件名或者路径
2.显示图像imshow()
cv2.imshow(window, image)
Window:创建图像窗口名字
Image:显示的图像名(变量)
3.等待按键waitKey()
cv2.waitKey([delay])
delay表示等待键盘的时间单位为毫秒,若delay为负数或0,则无限等待。
4.destroyAllWindows()释放所有窗口
5.imwrite(filename, image) 将image复制到filename处(文件或者完整路径)
6.b,g,r = cv2.split(image) 将图像数据拆分成三份,蓝色、绿色、红色。
7.image_new = cv.merge([b, g, r]) 将b,g,r三份合并
最简单的显示图像程序:
import cv2 as cv
image = cv.imread("E:/dahai.jpeg") #路径中不要有中文。
print(image) #可以查看矩阵的样子
cv.imshow("image",image) #显示图像
cv.waitKey(0) #保持图像显示,按键盘任意键后停止等待
cv.destroyAllWindows() #关闭所有opencv窗口
cv.imwrite("E:/AAA-test.jpg",image) #将image图像复制到(第一个参数)路径中
二、图像属性的获取
图像有一些属性,一般常用的有三个:
shape:表示图像的大小(矩阵的长宽高)
size:返回图像的像素数目
dtype:返回图像的数据类型
调用方法很简单。只要是一个图像的对象就可以直接调用
先用image = imread读取一个图像的数据,
然后直接print(image.shape),就可以输出这个图像对象的属性值了。
例:
import cv2 as cv
#可以用属性来获取图像信息,对于图像对象
#shape,size,dtype分别可以获取图像的大小属性、像素数目和类型属性
image = cv.imread("E:/dahai.jpeg")
print("图像大小属性:",image.shape)
print("图像像素数目:",image.size)
print("图像类型属性:",image.dtype)
三、图像通道的拆分与组合
使用split()拆分后显示拆分后的灰度图像
使用merge()函数来组合拆分后的灰度图像,将其变为彩色图像。
import cv2 as cv
image = cv.imread("E:/dahai.jpeg")
b,g,r = cv.split(image) #将图像数据拆分成三份
cv.imshow("reason",image)
cv.imshow("blue",b)
cv.imshow("green",g)
cv.imshow("red",r)
cv.waitKey(0)
cv.destroyAllWindows()
四、生成随机图像
是生成一个随机灰度图像,在程序中用到了Numpy模块,要注意Numpy.random与random的区别
import cv2 as cv
import numpy as np
# import random
# imaaa1 = random.randint(3,6) #random模块中的randint只能在整数之间返回一个随机数
# #但是numpy模块中的random.randint可以返回一定范围内的一整个列表的随机数
imagegray = np.random.randint(0,256,size = [256,256],dtype=np.uint8)
cv.imshow("rand_pict",imagegray)
#生成一个随机灰度图像
cv.waitKey(0)
cv.destroyAllWindows()
若要生成随机彩色图像,则只需修改一行代码。
imagegray = np.random.randint(0,256,size = [256,256,3],dtype=np.uint8)
五、可以使用了按位与运算函数,使图像只显示一部分
import cv2 as cv
import numpy as np
image1 = cv.imread("E:/dahai.jpeg")
cv.imshow("reason",image1)
image2 = np.zeros(image1.shape,dtype=np.uint8) #创建和image1同样的小的0矩阵(或者说列表)
image2[100:400, 100:400] = 255 #将列表中间100*100到400*400的部分换成255(也就是11111111)
image3 = cv.bitwise_and(image1, image2) #按位与算法——成功只显示图像中的那一部分
cv.imshow("image3",image3)
cv.waitKey(0)
cv.destroyAllWindows()
六、更换色彩空间函数cv2.cvtColor()
import cv2 as cv
image1 = cv.imread("E:/dahai.jpeg")
cv.imshow("BGR",image1)
image_RGB = cv.cvtColor(image1, cv.COLOR_BGR2RGB)
cv.imshow("RGB",image_RGB)
cv.waitKey(0)
cv.destroyAllWindows()