(小坑:OpenCV颜色通道顺序BGR蓝绿红)
cv2.imread(filepath, flags)
用于读取图片文件,返回值为Mat类型(Matrix)
imread函数有两个参数,第一个参数是图片路径,第二个参数表示读取图片的形式,有三种:
1:cv2.IMREAD_COLOR:颜色通道RGB,这个是默认参数,可写1或不写。
-1:cv2.IMREAD_UNCHANGED:颜色通道RGBA,可以直接写-1。
0:cv2.IMREAD_GRAYSCALE:以灰度模式加载图片,可以直接写0。
import cv2
img = cv2.imread('bug.png',1)
# 相当于cv2.imread('bug.png',cv2.IMREAD_COLOR)
print(img) # Matrix输出形式与list相同
cv2.imwrite(file, img, num)
保存图像。第一个参数是要保存的文件名,第二个参数是要保存的图像。可选的第三个参数,它针对特定的格式:对于JPEG,其表示的是图像的质量,用0 - 100的整数表示,默认95;对于png ,第三个参数表示的是压缩级别。默认为3.
注意第三个参数:
cv2.IMWRITE_JPEG_QUALITY类型为 long ,必须转换成 int
cv2.IMWRITE_PNG_COMPRESSION, 从0到9 压缩级别越高图像越小。
cv2.cvtColor(img, flags)
颜色空间转换函数,第一个参数传入原始图片,第二个参数是转换方式。同样的,返回值为Mat类型(Matrix)
import cv2
img = cv2.imread(r'D:\Users\006hjy\Desktop\Python\pillow\1.png', cv2.IMREAD_UNCHANGED)
gray_img = cv2.cvtColor(img,cv2.COLOR_RGB2GRAY)
# 方法有很多,例如:
# cv2.COLOR_BGR2GRAY 将BGR格式转换成灰度图片
# cv2.COLOR_BGR2RGB 将BGR格式转换成RGB格式(红蓝互换)
# cv2.COLOR_BGRA2RGB 将RGBA转为RGB
cv2.imwrite(r'D:\Users\006hjy\Desktop\Python\pillow\2.png', gray_img)
cv2.split()
cv2.split(img)将颜色通道分离,返回值可作为数组编辑
cv2.merge([b, g, r, …])
cv2.merge([b, g, r,…])合并颜色通道
import cv2
img = cv2.imread(r'D:\1.png', cv2.IMREAD_UNCHANGED)
print(img)
b, g, r, a = cv2.split(img) # 分离颜色通道
print(b)
new_img1 = cv2.merge([b, g, r, a]) # 合并RGBA颜色通道
new_img2 = cv2.merge([b, g, r]) # 合并RGB颜色通道(丢弃Alpha)
cv2.imshow(wname,img)
显示图像,第一个参数是显示图像的窗口的名字,第二个参数是要显示的图像(imread读入的图像),窗口大小自动调整为图片大小。
import cv2
img = cv2.imread('123.png',cv2.IMREAD_GRAYSCALE)
cv2.imshow('image',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
cv2.waitKey顾名思义等待键盘输入,单位为毫秒,即等待指定的毫秒数看是否有键盘输入,若在等待时间内按下任意键则返回按键的ASCII码,程序继续运行。若没有按下任何键,超时后返回-1。参数为0表示无限等待。不调用waitKey的话,窗口会一闪而逝,看不到显示的图片。
cv2.destroyAllWindow()销毁所有窗口
cv2.destroyWindow(wname)销毁指定窗口
修改多个像素:
比如将一张图像的第100到150行,第100到150列的区域设为白色区域,代码如下:
import cv2
img = cv2.imread(r'D:\1.png', cv2.IMREAD_UNCHANGED)
img[100:150,100:150]=[255,255,255]
cv2.flip(img,flipcode)
翻转图像,flipcode控制翻转效果,复制图像。
flipcode = 0:沿x轴翻转
flipcode > 0:沿y轴翻转
flipcode < 0:x,y轴同时翻转
imgflip = cv2.flip(img,1)
cv2.imshow('My honey',imgflip)
cv2.waitKey(0)
imgcopy = img.copy()
cv2.imshow('My honey',imgcopy)
cv2.waitKey(0)
参考链接:https://www.freesion.com/article/3239726544/
https://blog.csdn.net/abc123mma/article/details/111309122