opencv――基础篇

匿名 (未验证) 提交于 2019-12-03 00:00:02

一 . opencv是什么及其作用?

  OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效――由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法(百度百科)。

  鉴于本人的工作环境主要是采用python作为开发工具,故本篇博客是基于python来做的学习记录。

二 . 环境依赖和opencv包

  •   环境:python3.7+windows10
  •   包:opencv-python、opencv-contrib-python

三 . 基本使用

  前提:准备若干张图片到本地

  

1. 读取图片,将其转换为数组

from matplotlib import pyplot as pyl import cv2 import numpy  img = cv2.imread("cat.jpg")  #img是一个numpy.ndarray对象,默认是以BGR三通道读取图片数据(三维数组)#img_gray = cv2.imread("cat.jpg",cv2.IMREAD_GRAYSCALE)   以灰度图像方式读取图片数据(二维数组)

2. 数组数据转换

img_BGR = cv2.imread("cat.jpg") img_gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)  #将其转换为灰度的二维数组数据

3. 数组数据窗口展示

img = cv2.imread("cat.jpg")  cv2.imshow("IMage",img) cv2.waitKey(0)          # 按任意键关闭窗口,cv2.waitKey(1000) 延时一秒关闭窗口 cv2.destroyAllWindows()

4. 图像保存

cv2.imwrite("mycat.jpg",img)

5. 图像的截取

# 其实本质就是对np数组进行操作 img = cv2.imread("cat.jpg") cv2.imshow("IMage",img[:100,:200])  # 取前100行,前200列的像素作为图像展示

img = cv2.imread("cat.jpg")  # 切片 b,g,r = cv2.split(img)   # 得到各自颜色通道的二维数组数据  # 合并 img = cv2.merge(b,g,r)   

img = cv2.imread("cat.jpg") img_2 = numpy.copy(img)   # np相加,像素值只要超过255,就减掉255,比如257,结果就为2 print(img[:3,:3,0]+img_2[:3,:3,0] )   # cv2相加,像素值超过255,就等于255 print(cv2.add(img[:3,:3,0],img_2[:3,:3,0]))

8 图片的融合

img_cat = cv2.imread("cat.jpg") img_dog = cv2.imread("dog.jpg")  ret = cv2.addWeighted(img_cat,0.2,img_dog,0.8,0)    # 数据后面的值决定图片融合和所占的权重 cv2.imshow("IMage",ret) cv2.waitKey(0)          # 按任意键关闭窗口,cv2.waitKey(1000) 延时一秒关闭窗口 cv2.destroyAllWindows()# 如果图片大小不一致,使用cv2.resize(img_xx,(300,200))  ――――》转换为np.shape = 200,300的数组

9 图片的比例缩放

img_cat = cv2.imread("cat.jpg")  ret = cv2.resize(img_cat,(0,0),fx=3,fy=1) #横向拉长三倍 ret2 = cv2.resize(img_cat,(0,0),fx=3,fy=3) #图片扩大三倍

                                                                        ――努力追求自己的最好,尽力表现自己的最佳

  

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!