Python openCV 实战

opencv 实践入门1 - 安装,准备和测试

2019-10-14  本文已影响0人  发哥的档案室

我只是一名搬砖工,无意侵犯各位大佬知识产权。
最近因项目组需要,开始学图像处理
所以记录一下这个过程以及经验,希望能帮到大家

学习参考资料:

1.《图像处理的数学修养》

  1. github 上的OpenCV-Python-Tutorial

若想系统地学习,麻烦移步到 github或买书啃一下


安装 Python openCV

  1. anaconda cloud 搜索 opencv
  2. 选择合适的版本,我选的是第四个(anaconda/opencv, 其他版本我也不懂,要请教其他大佬)
  3. 点击去,根据上面的命令安装,比如:这个是 conda install -c anaconda opencv (蓝色框)

如果不知道什么是 anaconda,或者还没有安装 Python 的朋友,建议可以看看我写的另一篇文章

测试是否安装成功

  1. 准备一张图片,打开 spyder
import cv2

png = '/Users/brain.png'   ##图片放置的路径,最好放绝对路径,肯定不会出错。(我是 mac 玩家,win 玩家自行修改)
img = cv2.imread(png,0)  # imread 读入(加载)图片,参数1,图片文件路径,参数2,读入图片格式,*1*:彩色(默认),*0*:灰度图,*-1*:包含透明通道的彩色图

cv2.imshow('brain',img)  ## 显示图片,参数1,窗口名字(随便命名),参数2,要显示的图片

直接使用 imshow,不能调节显示窗口大小.png

可以先预设一个窗口 namedWindow,在这个窗口中打开图片,这样设置的窗口可以在打开后调整大小,适用于图片较大的情况

import cv2

png = '/Users/brain.png'
img = cv2.imread(png,0)

# 先定义窗口,后显示图片
cv2.namedWindow('brain2', cv2.WINDOW_NORMAL) ##参数1是窗口名字,参数2 可选(cv2.WINDOW_AUTOSIZE:窗口大小自适应图片, cv2.WINDOW_NORMAL:窗口大小可调整)
cv2.imshow('brain2', img)
cv2.waitKey(0)
### waitKey 是让程序暂停,数字是暂停的时间,0代表一直等待

# 等待期间可以获取用户按键输入,如

k = cv2.waitKey(0)
if k == 's':
    cv2.imshow('brain2', img)
    cv2.destroyAllWindows()  ### 关闭所有打开的窗口
使用namedWindow里面的cv2.WINDOW_NORMAL可以设置窗口大小.png

保存照片 cv2.imwrite()

import cv2

png = '/Users/brain.png'
picture = cv2.imread(png,0)

cv2.imwrite('brain_gray.jpg',picture)

处理前后对比.png

小结 (基础测试操作)


应用: (原地址)
  1. 加载一幅灰度图像,显示它,如果按's'则保存图像并退出,如果按ESC键直接退出
import cv2

img = cv2.imread('/Users/brain.png',0)
cv2.imshow('brain',img)
k = cv2.waitKey(0)& 0xFF
if k == 27:         # wait for ESC key to exit
    cv2.destroyAllWindows()
    cv2.waitKey(1)
elif k == ord('s'): # wait for 's' key to save and exit
    cv2.imwrite('brain_gray.png',img)
    cv2.destroyAllWindows()
    cv2.waitKey(1)
  1. 和Python 的Matplotlib结合使用.
import cv2
from matplotlib import pyplot as plt

img = cv2.imread('/Users/brain.png',0)
plt.imshow(img, cmap = 'gray', interpolation = 'bicubic')
plt.xticks([]), plt.yticks([])  # to hide tick values on X and Y axis
plt.show()
上一篇 下一篇

猜你喜欢

热点阅读