opencv学习二:图像加载与保存

pycharm里创建一个工程,新建一个.py文件

一、读取图像:

import cv2 as cv  #导入cv模块
src = cv.imread("C:/Users/lenovo/Desktop/opencv/daima/banknum/template-matching-ocr/images/ocr_a_reference.png")  #读取图片位置
cv.namedWindow("input image" ,cv.WINDOW_AUTOSIZE)  #创建一个GUI
cv.imshow("input image",src)  #对窗口图片进行展示
cv.waitKey(0)  #等待用户的下一步操作
cv.destroyAllWindows()  #释放所有的内存

运行截图:
opencv学习二:图像加载与保存_第1张图片

1.Mat imread(const string& FileName, int flags = 1); 读取图片

第一个参数FileName:图片路径名:“\”"\“和”/" “//” 无论正反,单双python2.7没影响,我python3.7用的"/"
第二个参数flags:是载入标识
指定一个加载图像的颜色类型,默认值为1,表示载入三通道的彩色图像;
-1,imread按解码得到的方式读入图像;
0,imread按单通道的方式读入图像,即灰白图像。
2.cv.NamedWindow( const char name, int flags );创建窗口*
第一个参数是窗口名字
第二个参数是窗口显示方式,
为0或cv.WINDOW_NORMAL:可以改变窗口大小
不写或cv.WINDOW_AUTOSIZE则不可改变大小

3. imshow(const string& winname, InputArray mat) 显示图片窗口
第一个参数:窗口名称。如果上面有NamedWindow()函数,这个名称要与它一样,不然会出现两个窗口,一个是NamedWindow的空白窗口,一个是imshow的图片窗口。

第二个参数:要显示的图片。

如果窗口是用CV_WINDOW_AUTOSIZE(默认值)标志创建的,那么显示图像原始大小。否则,将图像进行缩放以适合窗口。而imshow 函数缩放图像,取决于图像的深度。

4.waitKey(K) 窗口显示时间,单位:毫秒
k=0: (也可以是小于0的数值)一直显示,键盘上按下一个数字键即会消失。
k>0:显示多少毫秒

5. destroyAllWindows():删除建立的全部窗口,释放资源

二、图像的数据信息输出

opencv学习二:图像加载与保存_第2张图片代码:

import cv2 as cv  #导入cv模块
import numpy as np #np科学计数的包,通过numpy对数据进行处理


def get_image_info(image):
    print(type(image)) #打印image类别
    print(image.shape) #打印图像的宽,高,通道数
    print(image.size) #图像的大小
    print(image.dtype)#图像的字节位数占多少

src = cv.imread("C:/Users/lenovo/Desktop/opencv/daima/banknum/template-matching-ocr/images/lena.jpg")  #读取图片位置
cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)  #创建一个GUI
cv.imshow("input image", src) #对窗口图片进行展示
get_image_info(src)
cv.waitKey(0)  #等待用户的下一步操作
cv.destroyAllWindows()  #释放所有的内存

定义get_image_info()方法,并对图像的信息进行打印
运行截图:
opencv学习二:图像加载与保存_第3张图片
高度263 宽度263 是3个通道的
总像素数据是 207507
每个像素点有3个通道 每个通道的位数是一个字节 8位
且 2632633=207507

输出图像所有的像素数据

主要是在get_image_info方法中加了2行代码

pixel_data = np.array(image) #获取所有的像素数据
    print(pixel_data) #对像素数据进行打印

整体代码:

import cv2 as cv  #导入cv模块
import numpy as np #np科学计数的包,通过numpy对数据进行处理


def get_image_info(image):
    print(type(image)) #打印image类别
    print(image.shape) #打印图像的宽,高,通道数
    print(image.size) #图像的大小
    print(image.dtype)#图像的字节位数占多少
    pixel_data = np.array(image) #获取所有的像素数据
    print(pixel_data) #对像素数据进行打印

src = cv.imread("C:/Users/lenovo/Desktop/opencv/daima/banknum/template-matching-ocr/images/lena.jpg")  #读取图片位置
cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)  #创建一个GUI
cv.imshow("input image", src) #对窗口图片进行展示
get_image_info(src)
cv.waitKey(0)  #等待用户的下一步操作
cv.destroyAllWindows()  #释放所有的内存

图形的保存
为了方便与原图进行比对,我将原图像进行灰度处理后保存
主要是使用到了这两行代码

gray = cv.cvtColor(src, cv.COLOR_BGR2GRAY) #获取一张灰度图像
cv.imwrite("C:/Users/lenovo/Desktop/result.jpg", gray) #将灰度处理后的图形进行保存

cv.cvtColor()使用请参考【OpenCV3】颜色空间转换——cv::cvtColor()详解
代码如下:

import cv2 as cv  #导入cv模块
import numpy as np #np科学计数的包,通过numpy对数据进行处理


def get_image_info(image):
    print(type(image)) #打印image类别

src = cv.imread("C:/Users/lenovo/Desktop/opencv/daima/banknum/template-matching-ocr/images/lena.jpg")  #读取图片位置
cv.namedWindow("input image", cv.WINDOW_AUTOSIZE)  #创建一个GUI
cv.imshow("input image", src) #对窗口图片进行展示
get_image_info(src)
gray = cv.cvtColor(src, cv.COLOR_BGR2GRAY) #获取一张灰度图像
cv.imwrite("C:/Users/lenovo/Desktop/result.jpg", gray) #将灰度处理后的图形进行保存
cv.waitKey(0)  #等待用户的下一步操作
cv.destroyAllWindows()  #释放所有的内存

最终在保存的位置找到了灰度处理后的图像
opencv学习二:图像加载与保存_第4张图片

你可能感兴趣的:(opencv笔记,python,opencv,计算机视觉,深度学习)