OpenCV基本操作——OpenCV安装及图片读取

一、OpenCV-Python的安装

OpenCV是图像预处理的重要工具,提供了众多的支持Python的API,其安装步骤如下:

  1. 配置Python环境
  2. 键盘输入Windows+R键,输入cmd,回车
  3. 在命令行中输入pip install opencv-python(在输入pip install opencv-python==x.x.x可以安装指定版本的OpenCV-Pyhton包),按下回车键,等待安装即可
  4. 测试:在命令行下或者对应环境的IDE中输入以下代码后执行:
import cv2 as cv
image  = cv.imread("C:\\Users\\27914\\Desktop\\images\\test1.jpeg")#路径下必须有图片
cv.imshow("image",image)
cv.waitKey(0)
cv.destroyAllWindows()

若能成功显示图片说明安装成功

二、图像读取与色彩空间

1.图像读取与展示

OpenCV默认的读取的API是imread(),参数中第一个参数是图片的路径,第二参数是读取的图片的颜色类型(为可选参数),这里第二个参数flags主要会用到的三个类型:
cv.IMREAD_GRAYSCALE:返回原图的灰度图
cv.IMREAD_ANYDEPTH:保持原图的通道数不变
cv.IMREAD_COLOR:返回一个彩色图
图像展示使用的API是imshow(),第一个参数是要展示的窗口名称,第二个参数是要是的图片对象
具体如下:

import cv2 as cv
path1 = "C:\\Users\\2
path1 = "C:\\Users\\27914\\Desktop\\images\\test1.jpeg"
image = cv.imread(path1)
cv.namedWindow("image",cv.WINDOW_AUTOSIZE)#开启一个窗口
cv.imshow("image",image)
cv.waitKey(0)
cv.destroyAllWindows()

image.png
若flags参数选定,如:

image = cv.imread(path1,cv.IMREAD_GRAYSCALE)
cv.namedWindow("image",cv.WINDOW_AUTOSIZE)#开启一个窗口
cv.imshow("image",image)
cv.waitKey(0)
cv.destroyAllWindows()

image.png
一般最多只会用到cv.IMREAD_GRAYSCALE。
waitKey(0)表示让程序暂停,等待指令,0表示一直等待直到关闭;
destoryAllWindows(),表示关闭所有窗口。

2.图像色彩空间的转换

色彩空间转换的API是cvtColor(),参数src是指要处理的原始图像,参数code是指要转换的色彩空间,在OpenCV中默认读取的色彩空间是BGR,故在初次转换色彩空间时一般由BGR转出,详细代码如下:

import cv2 as cv
path1 = "C:\\Users\\27914\\Desktop\\images\\test1.jpeg"
image = cv.imread(path1)
gray = cv.cvtColor(image,cv.COLOR_BGR2GRAY)
hsv = cv.cvtColor(image,cv.COLOR_BGR2HSV)
hls = cv.cvtColor(image,cv.COLOR_BGR2HLS)
lab = cv.cvtColor(image,cv.COLOR_BGR2LAB)
luv = cv.cvtColor(image,cv.COLOR_BGR2LUV)
cv.imshow("image",image)
cv.imshow("gray",gray)
cv.imshow("hsv",hsv)
cv.imshow("hls",hls)
cv.imshow("lab",lab)
cv.imshow("luv",luv)
cv.waitKey(0)
cv.destroyAllWindows()

gray:
image.png
hsv:
image.png
这里只列出了比较重要的两种色彩空间的输出。
这里浅谈一下hsv色彩空间:
在BGR色彩空间中,BGR代表的是颜色通道(B为蓝色通道,G为绿色通道,R是红色通道),在这个色彩空间只是生产了人类所能感知的颜色的种类,而并没有注重颜色的深浅明暗,在图像预处理中,我们要尽可能地得到图像更加全方面的信息,而hsv色彩空间刚好可以满足这个要求,hsv中h代表的是色彩,s代表深浅,v代表亮度,我们可以通过对h、s、v进行阈值的分割得到不同亮度深浅的颜色,在色彩分割能够起到很好的效果。

(完)