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方法,否则会失败。

Collecting numpy Using cached numpy-2.2.6.tar.gz (20.3 MB) Installing build dependencies ... done Getting requirements to build wheel ... done Installing backend dependencies ... done Preparing metadata (pyproject.toml) ... error error: subprocess-exited-with-error × Preparing metadata (pyproject.toml) did not run successfully. │ exit code: 1 ╰─> [21 lines of output] + D:\rubbish\duckov-bot\venv\Scripts\python.exe C:\Users\Administrator\AppData\Local\Temp\pip-install-cmiwrbdc\numpy_88a4b003f54b4295a73a4d7d18a47e11\vendored-meson\meson\meson.py setup C:\Users\Administrator\AppData\Local\Temp\pip-install-cmiwrbdc\numpy_88a4b003f54b4295a73a4d7d18a47e11 C:\Users\Administrator\AppData\Local\Temp\pip-install-cmiwrbdc\numpy_88a4b003f54b4295a73a4d7d18a47e11\.mesonpy-pah036s7 -Dbuildtype=release -Db_ndebug=if-release -Db_vscrt=md --native-file=C:\Users\Administrator\AppData\Local\Temp\pip-install-cmiwrbdc\numpy_88a4b003f54b4295a73a4d7d18a47e11\.mesonpy-pah036s7\meson-python-native-file.ini The Meson build system Version: 1.5.2 Source dir: C:\Users\Administrator\AppData\Local\Temp\pip-install-cmiwrbdc\numpy_88a4b003f54b4295a73a4d7d18a47e11 Build dir: C:\Users\Administrator\AppData\Local\Temp\pip-install-cmiwrbdc\numpy_88a4b003f54b4295a73a4d7d18a47e11\.mesonpy-pah036s7 Build type: native build Project name: NumPy Project version: 2.2.6 WARNING: Failed to activate VS environment: Could not find C:\Program Files (x86)\Microsoft Visual Studio\Installer\vswhere.exe ..\meson.build:1:0: ERROR: Unknown compiler(s): [['icl'], ['cl'], ['cc'], ['gcc'], ['clang'], ['clang-cl'], ['pgcc']] The following exception(s) were encountered: Running `icl ""` gave "[WinError 2] 系统找不到指定的文件。" Running `cl /?` gave "[WinError 2] 系统找不到指定的文件。" Running `cc --version` gave "[WinError 2] 系统找不到指定的文件。" Running `gcc --version` gave "[WinError 2] 系统找不到指定的文件。" Running `clang --version` gave "[WinError 2] 系统找不到指定的文件。" Running `clang-cl /?` gave "[WinError 2] 系统找不到指定的文件。" Running `pgcc --version` gave "[WinError 2] 系统找不到指定的文件。" A full log can be found at C:\Users\Administrator\AppData\Local\Temp\pip-install-cmiwrbdc\numpy_88a4b003f54b4295a73a4d7d18a47e11\.mesonpy-pah036s7\meson-logs\meson-log.txt [end of output] note: This error originates from a subprocess, and is likely not a problem with pip. error: metadata-generation-failed × Encountered error while generating package metadata. ╰─> numpy
最新发布
12-18
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值