引用
import numpy as np
import cv2
import matplotlib.pyplot as plot
基础函数
cv2.imread() #读入图像
cv2.imshow() #显示图像
cv2.imwrite() #保存图像
k = cv2.waitKey(0) #等待键盘输入,k为输入的ASCII码值
cv2.destoryAllWindows() #删除所有窗口
读入图像
img = cv2.imread('meinv.jpg',0) # 0 默认灰色
img = cv2.imread('meinv.jpg',1) #彩色
img = cv2.imread('meinv.jpg',-1) #彩色
img = cv2.imread('meinv.jpg',IMREAD_GRAYSCALE) #灰色
img = cv2.imread('meinv.jpg',IMREAD_COLOR) #彩色
### meinv:图像的名字 第二个参数:应该如何读取这幅图片
显示图像
cv2.imshow('imag',img) #imag:窗口的名字
k = cv2.waitKey(0)&0XFF #等待键盘输入,k为输入的ASCII码值,&0XFF:64位系统需要,32位系统不需要
cv2.destoryAllWindows() #删除所有窗口
cv2.destoryWindow('imag') #删除特定窗口
保存图像
cv2.imwrte('messigary.png',img) #'messigary.png':保存路径
窗口大小调整 cv2.namedWindow()函数
cv2.namedWindow('image',cv2.WINDOW_NORMAL) #可调整窗口大小
cv2.imshow('imag',img)
代码:
加载一个灰度图,显示图片,按下’s’键保存后退出,或者 按下 ESC 键退出不保存。
import numpy as np
import cv2
img = cv2.imread('meinv.jpg',0) # 灰色 图像格式(.jpg)不能漏
#img = cv2.imread('meinv.jpg',1) 彩色
cv2.imshow('imag',img)
k=cv2.waitKey(0)&0XFF #等待键盘输入,k为输入的ASCII码值
if k == 27: #ESC的ASCII值为27
cv2.destoryAllWindows()
elif k == ord('s'): #ord()函数:该函数是以单个字符作为参数,返回对应的ASCll数值或者Unicode值
#注意:ord函数的参数是单个字符,并非多个,则会引发一个TypeError的异常!!
cv2.imwrite('meinv.png',img)
cv2.destoryAllWindows()
效果图
简单使用Matplotlib
import numpy as np
import cv2
from matplotlib import pyplot as plt
img = cv2.imread('meinv.jpg',0)
plt.imshow(img, cmap = 'gray',interpolation = 'bicubic')
#cmap:Colormap, 可选 interpolation: string, 可选,差值方式
plt.xticks([]),plt.yticks([]) #隐藏X轴和Y轴上的记号值
plt.show()
Matplotlib显示彩色图像
import cv2
import numpy as np
import matplotlib.pyplot as plt
img = cv2.imread('messi4.jpg')
b,g,r = cv2.split(img) #split:分裂
img2 = cv2.merge([r,g,b]) #merge:合并
plt.subplot(121);plt.imshow(img) # expects distorted color期望颜色失真
#plt.subplot()函数:https://blog.csdn.net/qq_41664688/article/details/104915501
plt.subplot(122);plt.imshow(img2) # expect true color期待本色
plt.show()
cv2.imshow('bgr image',img) # expects true color期待本色
cv2.imshow('rgb image',img2) # expects distorted color期望颜色失真
cv2.waitKey(0)
cv2.destroyAllWindows()
注意:彩色图像使用openCV加载时是BGR模式。但是Matplotlib是RGB模式。所有彩色图像如果已经被OpenCV读取,那它将不会被Matplotib正确显示
BGR:BGR颜色的表示一般用16进制表示,所说的RGB是三原色 即 红色(Red)、
绿色(Green)、蓝色(Blue),每种颜色用两位16进制表示,即从00到FF,
那么RGB三种颜色就要用六位16进制表示,即从000000到 FFFFFF,
从左到右每两位分开分别代表红绿蓝,所以ff0000是纯红色,
00ff00是纯绿色,0000ff是纯蓝色,000000是黑色,FFFFFF是白色
RBG:(0,0,255)蓝色
(0,255,0)绿色等
Matplotib中imshow方法
#https://my.oschina.net/u/2474629/blog/1800096