OpenCV计算机视觉(一) —— 图像的基本操作

OpenCV有很多的内置函数用来图像处理以及是大多数计算机视觉操作的基础。图像的基本操作对图像来说至关重要。图像的读取、图像的显示、图像大小的改变、色彩空间的转换,图片的保存都至关重。

1、图像的读取、显示和保存

图像的读取主要是用cv.imread()函数对图像进行读取,使用plt.imshow()对读取的图片进行显示,使用cv.imwrite()对图像进行保存,具体的函数用法,点击此处查看:(2条消息) OpenCV-Python计算机视觉函数_一只会飞的猪️的博客-CSDN博客。废话不多说,上代码:

import cv2 as cv

# 读取图片
img = cv.imread('reba.jpg')

# 显示图片
cv.imshow('reba', img)

# 设置显示时长,参数设置为0,表示一直显示在窗口上
cv.waitKey(0)

# 保存图片
cv.imwrite('reba1.jpg', img)

# 释放内存
cv.destroyAllWindows()

运行结果如下:

OpenCV计算机视觉(一) —— 图像的基本操作_第1张图片

值得注意的是,当现实图片时必须对图片的显示时长进行循环,即设置cv.waitKey(),如果不设置图像只会在窗口上显示一瞬间,一般设置0代表无限循环,一直显示在屏幕上。对图片进行完所有的操作后需要对图像的内存进行释放。

2、改变图像的尺寸

往往有的时候读取的图像尺寸太大,在上不能够完全显示。那么就需要对他的尺寸进行修改,通过cv.resize()函数进行修改,详细用法见(2条消息) OpenCV-Python计算机视觉函数_一只会飞的猪️的博客-CSDN博客。代码如下:

import cv2 as cv

# 读取图片
img = cv.imread('dilireba.jpg')

# 改变图像尺寸
img1 = cv.resize(img, (600, 600))
# 显示图片
cv.imshow('reba', img1)

# 设置显示时长,参数设置为0,表示一直显示在窗口上
cv.waitKey(0)

# 保存图片
cv.imwrite('reba1.jpg', img)

# 释放内存
cv.destroyAllWindows()

运行结果如下:

OpenCV计算机视觉(一) —— 图像的基本操作_第2张图片

 显然图像被修改成了600*600的正方形图像,能够在屏幕上完全显示。

3、色彩空间的转换

在图像处理上,彩色图像往往并不能很好的完成特征提取、边缘检测等各种处理,对图像进行色彩空间的转换往往能达到更好的效果。实现色彩空间的转化需要用的cv.cvtColor()函数,操作相对来说较为简单。

简单介绍一下其他的色彩空间:

GRAY 灰度空间,即把图像转化成灰度图,将三通道图像转化为单通道图像,用0-255的灰度值作为像素值

HSV H是色调,用角度度量(0-360°),S是饱和度(0-100%),V是颜色的亮度。

YUV Y代表明亮度,U、V代表色度,用来描述色彩饱和度

YCrCb 与YUV大同小异,Y表示亮度,Cr、Cb表示色度

需要注意的是,OpenCV读取的图片是按照BGR读取的,而不是人正常视觉下的RGB

实现色彩转换的部分代码如下:

def color_space_demo(image):
    gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
    cv.imshow('gray', gray)
    hsv = cv.cvtColor(image, cv.COLOR_BGR2HSV)
    cv.imshow('hsv', hsv)
    yuv = cv.cvtColor(image, cv.COLOR_BGR2YUV)
    cv.imshow('yuv', yuv)
    Ycrcb = cv.cvtColor(image, cv.COLOR_BGR2YCrCb)
    cv.imshow('Ycrcb', Ycrcb)

src = cv.imread("R-C.jpg")  # blue green red
cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)
cv.imshow("input image", src)
color_space_demo(src)

解释一下,BGR到灰度空间就是COLOR_BGR2GRAY,其他同理!

运行结果如下:

可以看到,不同的色彩空间带来的视觉效果完全不同,不过胖迪还是依旧美丽。

整篇文章完整代码:

import cv2 as cv

# 读取图片
img = cv.imread('dilireba.jpg')

# 改变图像尺寸
img1 = cv.resize(img, (600, 600))
# 显示图片
cv.imshow('reba', img1)

# 设置显示时长,参数设置为0,表示一直显示在窗口上
cv.waitKey(0)

# 实现色彩空间转化
def color_space_demo(image):
    gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)
    cv.imshow('gray', gray)
    hsv = cv.cvtColor(image, cv.COLOR_BGR2HSV)
    cv.imshow('hsv', hsv)
    yuv = cv.cvtColor(image, cv.COLOR_BGR2YUV)
    cv.imshow('yuv', yuv)
    Ycrcb = cv.cvtColor(image, cv.COLOR_BGR2YCrCb)
    cv.imshow('Ycrcb', Ycrcb)

src = cv.imread("R-C.jpg") 
cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)
cv.imshow("input image", src)
color_space_demo(src)

# 设置显示时长,参数设置为0,表示一直显示在窗口上
cv.waitKey(0)

# 保存图片
cv.imwrite('reba1.jpg', img)

# 释放内存
cv.destroyAllWindows()

总结:这开篇之作主要讲述了OpenCV的基本操作。读取图像,改变尺寸,显示图像是所有OpenCV程序对图像进行处理的必经之路。色彩转换也至关重要,其中灰度空间使用最为广泛,将图像灰度化,可以降低图片的复杂度,对图片进行更好的相关处理。一些OpenCV的相关函数的用法、参数可以看我这个专栏的(2条消息) OpenCV-Python计算机视觉函数_一只会飞的猪️的博客-CSDN博客,对我所讲解的OpenCV处理的函数用法以及参数都有介绍。

你可能感兴趣的:(OpenCV计算机视觉,opencv,python,计算机视觉,图像处理)