Python+OpenCV 图像处理系列(1)

您所在的位置:网站首页 python调用opencv处理图片 Python+OpenCV 图像处理系列(1)

Python+OpenCV 图像处理系列(1)

2024-07-08 04:34| 来源: 网络整理| 查看: 265

Ubuntu 16.04 下安装 Opencv sudo apt-get install libopencv-dev sudo 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 grayscale img = 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 cv2 cv2.namedWindow('image', cv2.WINDOW_NORMAL) cv2.imshow('image',img) cv2.waitKey(0) cv2.destroyAllWindows() 3. 保存图片

使用下面函数保存图片

cv2.imwrite(filename, img)

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

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


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3