图像处理之读入写入图像文件

来源:互联网 发布:网络填表终结者 下载 编辑:程序博客网 时间:2024/06/05 07:28

OpenCV是开源、跨平台的计算机视觉库,由英特尔公司发起并开发,在商业和研究领域中可以免费使用。而Python作为当前非常流行的动态语言之一,Python不仅使用非常简单,而且功能强大。通过Python来学习OpenCV框架,可以很快的理解计算机视觉的基本概念以及重要算法。下面我们就开始OpenCV的学习之旅吧!

使用OpenCV读/写图像文件:imread() 函数和imwrite() 函数能支持各种静态图像文件格式。支持:BMP、PNG、JPEG、TIFF格式的图像。接着简单介绍一下图像的细节。无论哪种格式,每一个像素都会有一个值,但是不同格式表示像素的方式有所不同。在计算机视觉中有三种常用的色彩空间:灰度、BGR以及HSV。灰度色彩空间是通过除去彩色信息来将其转换为灰阶,灰度色彩空间对中间处理特别有效。BGR即蓝、绿、红色彩空间,每一个像素点都由一个三元数组来表示,分别代表蓝、绿、红色。例如:(255,0,0)表示蓝色,(0,255,0)表示绿色,(0,0,255)表示红色。HSV分别表示色调、饱和度、黑暗的程度。

#! /usr/bin/env python# -*- coding:utf-8 -*-import cv2import numpy as npimport osimport matplotlib.pyplot as plt# 由于每个像素都是由一个8位整数来表示,即每个像素值的范围是0-255.所以,可以这样表示一个图像img = np.zeros((3,3), dtype=np.uint8)  #一个黑色正方形图像
图像与原始字节之间的转换

randomByteArray = bytearray(os.urandom(120000))flatNumpyArray = np.array(randomByteArray)# 转换为灰色图像grayImage = flatNumpyArray.reshape(300, 400)cv2.imwrite("RondomGray.png", grayImage)# 转换为BGR图像bgrImage = flatNumpyArray.reshape(100, 400, 3)cv2.imwrite("RandomColor.png", bgrImage)
访问图像数据
# 将BGR图像的(0,0)处的像素转化为白像素img = cv2.imread("timg.jpg")# [0,0]表示最左上角。 第一个数字表示y轴或行,0表示最上角。而第二个数字表示x轴或列,0表示最左边。img[0, 0] = [255, 255, 255]cv2.imwrite("timg_1.jpg", img)# 将图像所有的G(绿色)值设为0img[:, :, 1] = 0  # img中的最后一个数表示通道,对于一个有色图像来说,有三个通道,顺序是B,G,R分别用0,1,2表示cv2.imwrite("timg_2.jpg", img)# 锁定一个区域并复制它到另一个区域my_roi = img[0:100, 0:100]img[300:400, 300:400] = my_roicv2.imwrite("timg_3.jpg", img)# 查看图像的宽度,高度和通道数,如果是单色或灰色,则没有通道数print img.shape# 图像像素的大小print img.size# 该属性会得到图像数据类型print img.dtype
在窗口显示图像
imga = cv2.imread("timg.jpg")cv2.imshow("My img", imga)cv2.waitKey()  # 表示等待键盘触发的时间cv2.destroyAllWindows() # 表示由opencv创建的所有窗


# 在来看一个例子,解释cv2.waitKey()的用法。img_messi = cv2.imread("messi5.jpg", 0) # 以灰色读入图像cv2.imshow("image", img_messi)k = cv2.waitKey(0)if k == 20:       # 按下“ESC”键退出    cv2.destroyAllWindows()elif k == ord("s"):     # 按下“s”键退出图像并保存    cv2.imwrite("image_messigray.png", img_messi)    cv2.destroyAllWindows()

用matplotlib展示图像

plt.imshow(img_messi, cmap="gray", interpolation="bilinear")plt.xticks([]), plt.yticks([])plt.show()


参考:

《OpenCV 3计算机视觉Python语言实现》

  OpenCV帮助文档:http://docs.opencv.org/3.0.0/dc/d2e/tutorial_py_image_display.html

所使用的图像示例:


原创粉丝点击