【opencv-cv2】图像读取、显示和存储

cv2模块详解

常用API(Application Program Interface)

1.图片读取 - cv2.imread(filename, flags):

filename:图片路径

#1.文件路径中只能全是英文,不能包含有中文
#2.直接从图片属性copy过来的路径用的是反斜杠分割路径,在前面加一个r
img = cv2.imread(r'C:\pycharm\imagespath\yaoji.jpg')
#3.或者像下面一样用双反斜杠分割路径(windows系统下)
img = cv2.imread('C:\\pycharm\\imagespath\\yaoji.jpg')
#4.或者直接用单斜杠分割路径(双斜杠,或者在前面加r都可以成功读取)
img = cv2.imread('C:/pycharm/imagespath/yaoji.jpg')
#5.也可省略详细路径,只写明图片名称格式,这种情况下只能读取当前路径下的图片
cat = cv2.imread('cat.jpg')

flags:指定图片其他相关操作(可设置读入图片属性)

#flags可以指定读入图片时的多种属性
flags=cv2.IMREAD_COLOR:默认参数,读入一副彩色图片,忽略alpha通道
flags=cv2.IMREAD_GRAYSCALE:读入灰度图片
flags=cv2.IMREAD_UNCHANGED:顾名思义,读入完整图片,包括alpha通道
flags=cv2.IMREAD_REDUCED_GRAYSCALE_2:读入灰度图,尺寸缩小为原图1/2
flags=cv2.IMREAD_REDUCED_GRAYSCALE_4:1/4
flags=cv2.IMREAD_REDUCED_GRAYSCALE_8:1/8
flags=cv2.IMREAD_REDUCED_COLOR_2:读入彩色图,尺寸缩小为原图1/2
flags=cv2.IMREAD_REDUCED_COLOR_4:1/4
flags=cv2.IMREAD_REDUCED_COLOR_8:1/8
flags=cv2.IMREAD_LOAD_GDAL:
flags=cv2.IMREAD_ANYCOLOR:
flags=cv2.IMREAD_ANYDEPTH:
#完整的图片读取语句
img = cv2.imread('C:/pycharm/imagespath/yaoji.jpg', flags=cv2.IMREAD_ANYDEPTH) #flags根据需要自行选择
#通常flags用于指定读入灰度图或是彩色图,可以用以下简洁代替
img = cv2.imread('C:/pycharm/imagespath/yaoji.jpg', 0) #读入灰度图,等同于flags=cv2.IMREAD_GRAYSCALE
img = cv2.imread('C:/pycharm/imagespath/yaoji.jpg', 1) #读入彩色图,等同flags=cv2.IMREAD_COLOR
img = cv2.imread('C:/pycharm/imagespath/yaoji.jpg', -1)#等同于flags=cv2.IMREAD_UNCHANGED

alpha通道,又称A通道,是一个8位的灰度通道,该通道用256级灰度来记录图像中的透明度复信息,定义透明、不透明和半透明区域,其中黑表示全透明,白表示不透明,灰表示半透明。

2.图片显示 - cv2.imshow(windowname, img):
windowname: 窗口名称,如果此之前没有已开的窗口那么此命令会新开一个名为‘windowname’的窗口,窗口打开之后如果没有命令行去关闭或者退出程序,那么会一直存在且可调用
img: 想要显示的图片对象

#完整的图片显示命令
 cv2.imshow('myself', img)  # 第一个参数为窗口名称,第二个参数为显示的对象
 cv2.waitKey(1000)  # 等待时间,单位为毫秒,在等待时间结束后会自动退出显示(注意退出显示并不是关闭窗口)
 #cv2.waitKey(0)  # 0表示按任意键终止
 cv2.destroyAllWindows()  # 释放所有窗口

 #dv2.destroyWindow(wname)  #释放指定窗口
 #如果没有后两句命令,那么图片一瞬间显示后就会消失

提示:如果每次显示图片都要写这三行命令显然不是一个好主意;可以在程序中自己定义一个函数用于完成这个显示任务,程序中自己调用函数显示即可

开窗口/命名窗口 - cv2.namedWindow(windowname,flags)
新建一个显示窗口,可指定窗口类型
windowname:窗口名称,可在imshow函数中通过窗口名称被调用
flags:可以设置窗口属性

flags=cv2.WINDOW_AUTOSIZE 窗口大小自动适应图片大小,并且不可手动更改
flags=cv2.WINDOW_NORMAL 用户可以改变这个窗口大小
flags=cv2.WINDOW_OPENGL 窗口创建的时候会支持OpenGL
flags=cv2.WINDOW_KEEPRATIO
flags=cv2.WINDOW_FULLSCREEN
flags=cv2.WINDOW_FREERATIO
flags=cv2.WINDOW_GUI_EXPANDED
flags=cv2.WINDOW_GUI_NORMAL

3.图片存储 - cv2.imwrite(filename,img,flags)
filename:指定图片存储的路径、名称和格式
img:存储的目标图片
flags:可选的第三个参数(对于JPEG,其表示的是图像的质量,用0 - 100的整数表示,默认95;对于png ,第三个参数表示的是压缩级别。默认为3)

img = cv2.imread(r'C:\machinen learning\pics\1.JPG', cv2.IMREAD_GRAYSCALE) 
cv2.imwrite('1.JPG', img)
# 存图,第一个参数指定路径和名称,默认为当前文件路径,第二个参数为存的目标图像,
# 可选的第三个参数,它针对特定的格式:对于JPEG,其表示的是图像的质量,用0 - 100的整数表示,默认95;对于png ,第三个参数表示的是压缩级别。默认为3
# cv2.IMWRITE_JPEG_QUALITY类型为 long ,必须转换成 int
# cv2.IMWRITE_PNG_COMPRESSION, 从0到9 压缩级别越高图像越小
cv2.imwrite('1-1-1.PNG', img, [int(cv2.IMWRITE_PNG_COMPRESSION), 0])
cv2.imwrite('1-1-2.PNG', img, [int(cv2.IMWRITE_PNG_COMPRESSION), 9])
cv2.imwrite('1-2-1.JPEG', img, [int(cv2.IMWRITE_JPEG_QUALITY), 95])
cv2.imwrite('1-2-2.JPEG', img, [int(cv2.IMWRITE_JPEG_QUALITY), 55])
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值