openCV(一)——环境配置20.3.24

1.OpenCV环境配置

1.1安装OpenCV

cmd命令行或pycharm终端窗口:

pip install opencv-python
1.2时间评估

通过时钟周期数除以电脑主频来测量运行时间(单位:s)

import cv2
start = cv2.getTickCount()
print(10*10*10)
end = cv2.getTickCount()
print('程序运行:'+str((end-start)/cv2.getTickFrequency())+'s')
1.3 优化原则
  1. Numpy的运行速度并不一定比Python语法快,元素数量较少时,用Python基本语法。
  2. 尽量避免使用循环,尤其嵌套循环。
  3. 优先使用OpenCV/Numpy中封装好的函数。
  4. 尽量将数据向量化,变成Numpy的数据格式。
  5. 尽量避免数组的复制操作。

2.图片载入、显示、保存

2.1 imread(p1,p2)——加载图片
	img = cv2.imread('03.jpg',0)

传入参数:p1为图片文件名,p2为读入方式:

效果
cv2. IMREAD_COLOR/1彩色图
cv2.IMREAD_GRAYSCALE/0灰度图
cv2.IMREAD_UNCHANGED/-1包含透明通道的彩色图
2.2 imshow(p1,p2)——显示图片
cv2.namedWindow('test',cv2.WINDOW_NORMAL)#创建一个窗口,参数为窗口名和适应方式——cv2.WINDOW_AUTOSIZE:窗口大小自适应图片;cv2.WINDOW_NORMAL:表示窗口大小可调整(图片较大时)。
cv2.imshow('test',img) 
cv2.waitKey(0) #等待时间(ms),传入0会一直等待。
2.3 imwrite(p1,p1,p3)——保存图片
  1. 图片格式

    常见图片格式全称解释
    bmpBitmap不压缩
    jpgJoint Photographic Experts Group有损压缩方式
    pngPortable Network Graphics无损压缩方式
  2. 代码

    cv2.imwrite('03-bmp.bmp',img)
    
    cv2.imwrite('03_jpg20.jpg',img,[int(cv2.IMWRITE_JPEG_QUALITY),20])
    cv2.imwrite('03_jpg100.jpg',img,[int(cv2.IMWRITE_JPEG_QUALITY),100])
    
    cv2.imwrite('img_png.png',img)
    cv2.imwrite('img_png5.png',img,[int(cv2.IMWRITE_PNG_COMPRESSION),5])
    cv2.imwrite('img_png9.png',img,[int(cv2.IMWRITE_PNG_COMPRESSION),9])
    
  3. 传入参数:p1:保存后的文件名;p2:要保存的图片;p3:控制保存质量:

       cv2.IMWRITE_JPEG_QUALITY:jpg质量控制,取值0~100,值越大,质量越好,默认为95
       cv2.IMWRITE_PNG_COMPRESSION:png质量控制,取值0~9,值越大,压缩比越高,默认为1
    

容量大小跟原图的容量没有直接关系,而是取决于原图的分辨率大小和原图本身的内容(压缩方式),另外,容量变大不代表画质提升。

2.4 扩展:使用Matplotlib库处理图片
  1. OpenCV中的图像是以BGR的通道顺序存储的,但Matplotlib是以RGB模式显示的,所以直接在Matplotlib中显示OpenCV图像会出现问题,因此需要转换一下。
  2. BGR -> RGB的两种方式:
    • img[:,:,::-1]表示BGR翻转,变成RGB。
    • cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
import cv2
import matplotlib.pyplot as plt
import matplotlib.image as pli
# 1.显示灰度图
img = cv2.imread('img/04.jpg', 0)
plt.imshow(img, cmap='gray')
plt.show()

# 2.显示彩色图
img = cv2.imread('img/04.jpg')
new_img = img[:, :, ::-1] 
# new_img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB)
plt.subplot(122)
# plt.xticks([])
# plt.yticks([])
plt.imshow(new_img)
plt.show()

# 3.加载保存图片
img = pli.imread('img/04.jpg')
plt.imshow(img)
plt.savefig('img/04_copy.png')
plt.show()

小结

  1. 操作比较
功能opencv函数Matplotlib函数
加载图片cv2.imread(‘文件名’,读入方式)pli.imread(‘文件名’)
显示图片cv2.imshow(‘窗口名’,图片对象)plt.imshow(图片对象)
plt.show()
保存图片cv2.imwrite(‘保存文件名’,图片对象)plt.imshow(图片对象)
plt.savefig(‘保存文件名’)
  1. 用Matplotlib显示OpenCV图像必须先转换:GBR -> RGB:

    • img[:,:,::-1]表示BGR翻转,变成RGB;
    • cv2.cvtColor(img,cv2.COLOR_BGR2RGB)。
  2. opencv中的imshow方法会通过窗口显示图像;Matplotlib中显示图像除了要使用imshow方法还要show方法。

  3. Matplotlib中保存图像必须先用imshow方法再用savefig方法,否则会失败。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值