600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > Python+OpenCV 图像处理系列(1)— Ubuntu OpenCV安装 图片加载 显示和保存

Python+OpenCV 图像处理系列(1)— Ubuntu OpenCV安装 图片加载 显示和保存

时间:2020-01-09 14:23:22

相关推荐

Python+OpenCV 图像处理系列(1)— Ubuntu OpenCV安装 图片加载 显示和保存

Ubuntu 16.04 下安装 Opencv

sudo apt-get install libopencv-devsudo apt-get install python-opencv

或者使用pip安装, 此时会安装最新的 OpenCV 版本

sudo pip install opencv-python

概述

生活中图像都是由RGB三原色构成的,R表示红色(Red),G表示绿色 (Green),B表示蓝色(Blue)。计算机中RGB这三个颜色的取值通常是在 0-255 之间。

彩色图片有三个通道,所以属于三通道图片。计算机中的像素值通常是用 8 位的无符号整形表示,取值范围是 0-255,假设将图片颜色从黑到白分成 256 级,即通常说的黑白图片,也叫单通道图片,0 表示最黑,1 表示最白。

RGB的构成示例 (0, 255, 255)第一个元素表示红色的数值,第二个元素表示绿色的数值,第三个元素表示蓝色的数值。

在自然界中肉眼所能看到的任何色彩都可以由这三种色彩叠加而成,因此也被称为加色原理。比如黄色,可以通过红色和绿色相加,全红色为(255,0,0),全绿色为(0,255,0),全黄色为(255,255,0)。

每个图片都是由于很多个 3 个通道的彩色像素组成,可以将图片看成一个矩阵,其中每个像素对应矩阵中的一个位置,譬如:

图片左上角的像素点位置是(0, 0)

图片右上角的像素点位置是(1079, 0)

图片左下角的像素点位置是(0, 1439)

图片右下角的像素点位置是(1079, 1439)

数字图像有两个分辨率,图像分辨率输出分辨率

图像分辨率指的是每英寸的像素数,简写为ppi,我们平常说一张图片大小的时候使用的就是图像分辨率。

输出分辨率指的是设备输出图像时每英寸可产生的点数,简写为dpi,这是在印刷行业,摄影行业常用的分辨率,摄影行业通常要求DPI不低于 300。

相同的图像分辨率,更高的DPI表现为物理尺寸更小。因为这个时候每英寸点更多,像素变小。

1. 加载图片

使用下面函数读入图像

cv2.imread(img_path, read_type)

函数接受两个参数:

img_path: 图片的相对路径或者绝对路径

read_type: 读取图片的类型,包括以下几个参数:

cv2.IMREAD_COLOR:读入一副彩色图像。图像的透明度会被忽略,这是默认参数;

cv2.IMREAD_GRAYSCALE:以灰度模式读入图像;

cv2.IMREAD_UNCHANGED:读入一幅图像,并且包括图像的alpha通道;

示例:

import cv2# Load an color image in grayscaleimg = cv2.imread('test.jpg', 0)

就算图像的路径是错的,OpenCV也不会提醒你,但是当你使用命令print img时得到的结果是None

2. 显示图片

使用下面函数显示图像

cv2.imshow()

窗口会自动调整为图像大小。第一个参数是窗口的名字,其次才是我们的图像。你可以创建多个窗口,只要你喜欢,但是必须给它们不同的名字。

cv2.imshow('image', img)cv2.waitKey(0)cv2.destroyAllWindows()

cv2.waitKey()是一个键盘绑定函数。

需要指出的是它的时间尺度是毫秒级

函数等待特定的几毫秒,看是否有键盘输入。特定的几毫秒之内,

如果按下任意键,这个函数会返回按键的ASCII码值,程序将会继续运行。如果没有键盘输入,返回值为 -1,

如果我们设置这个函数的参数为 0,那它将会无限期的等待键盘输入。它也可以被用来检测特定键是否被按下,例如按键 a 是否被按下。

cv2.destroyAllWindows()可以轻易删除任何我们建立的窗口。

cv2.destroyWindow()用于删除特定的窗口,可以使用在括号内输入你想删除的窗口名。

一种特殊的情况是,你也可以先创建一个窗口,之后再加载图像。这种情况下, 你可以决定窗口是否可以调整大小。使用到的函数是

cv2.namedWindow()

初始设定函数标签是cv2.WINDOW_AUTOSIZE, 但是如果你把标签改成cv2.WINDOW_NORMAL,你就可以调整窗口大小了。当图像维度太大,或者要添加轨迹条时,调整窗口大小将会很有用。

import cv2cv2.namedWindow('image', cv2.WINDOW_NORMAL)cv2.imshow('image',img)cv2.waitKey(0)cv2.destroyAllWindows()

3. 保存图片

使用下面函数保存图片

cv2.imwrite(filename, img)

第一个参数是要保存的文件名,第二个参数是图像在内存中的对象。

4. 实践

import cv2img = cv2.imread('messi5.jpg',0)cv2.imshow('image',img)k = cv2.waitKey(0)if k == 27: # wait for ESC key to exitcv2.destroyAllWindows()elif k == ord('s'): # wait for 's' key to save and exitcv2.imwrite('messigray.png',img)cv2.destroyAllWindows()

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。