Python+OpenCV 图像处理系列(1) |
您所在的位置:网站首页 › python调用opencv处理图片 › Python+OpenCV 图像处理系列(1) |
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)。
图片左上角的像素点位置是(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 |