opencv学习二:图像加载与保存
pycharm里创建一个工程,新建一个.py文件读取图像:mport 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" ,
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() #释放所有的内存
运行截图:
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():删除建立的全部窗口,释放资源
二、图像的数据信息输出
代码:
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()方法,并对图像的信息进行打印
运行截图:
高度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() #释放所有的内存
最终在保存的位置找到了灰度处理后的图像
更多推荐
所有评论(0)