Py-OpenCV学习记录1

导入函数库

在图像处理中主要的函数库有OpenCV、Numpy,在cmd中安装对应的模块即可。

OpenCv是因特尔公司基于C++版的图像处理工具包,可以理解为C++版的Matlab,建立这个工具的目的也是为了大家能够在一个共同架构的基础上建造摩天大楼,而不是各自为战在自己的地基上盖小平房。OpenCV最大的好处就是面向开发,稳定性好而且开源。

Numpy是Python的线性代数库,他和Matplotlib(绘图库)一起使用的这个组合可以基本替代Matlab。Numpy可执行的操作主要有数组的算数和逻辑运算、傅立叶变换和用于图形操作的例程与线性代数有关的操作,NumPy 拥有线性代数和随机数生成的内置函数。且Numpy是开源的。

图像处理看似是对图像进行修改,但是事实上图像的背后是数学问题(矩阵运算)。每一个图像由若干个像素点组成,其中每个像素点记录的便是图像的信息,如彩色图像则会在每个像素点中(小方格)依据类型的不同,如RGB、CSV等方式记录下每个格子的颜色是什么。

GUI功能

这一小节主要有三个点:读取图像、显示图像和保存新图像三个功能

  1. 读取


以imread函数实现。

参数->

filename为文件名、flags= 为读取图像的形式

flag = cv.IMREAD COLOD 加载的为彩色图像

flag = cv.IMREAD GRAYSCALE加载的为灰色色图像

flag = cv.IMREAD UNCHANGED加载的为原格式的图像

同时也可以通过1、0、-1来表示这三个参数,而不是三个flag

  1. 显示


以imshow函数实现。

参数->

winname为窗口名、mat为需要显示的图片

但是关于mat有一个细节要注意:

A)如果图像数据类型是8U(8位无符号),则直接显示。

B)如果图像数据类型是16U(16位无符号)或32S(32位有符号整数),则imshow函数内部会自动将每个像素值除以256并显示,即将原图像素值的范围由[0~255*256]映射到[0~255]。

C)如果图像数据类型是32F(32位浮点数)或64F(64位浮点数),则imshow函数内部会自动将每个像素值乘以255并显示,即将原图像素值的范围由[0~1]映射到[0~255](注意:原图像素值必须要归一化)


显示函数在使用后要搭配另一个函数waitKey()使用,否则窗口会只出现一下就消失。

waitKey()是一个等待键盘输入的函数,参数以毫秒计数的。例如waitKey(5)便会每5毫秒扫描一次,如有键按下则继续,如果参数为0,他会一直等待键盘按下。

这个函数非常重要,可以接连处理许多其他的GUI事件。

  1. 保存


以imwrite()函数实现

参数->

第一个参数filename为文件名,第二个参数img为需要输入的图像

如cv2.imwrite(r"D:\Document\\CE\\CV\\t1_1920x1280.png", img)

例如:按下s后便会保存下。

import cv2

import numpy as np



im1 = cv2.imread('car_test2.jpg', flags=cv2.IMREAD_COLOR)

im2 = cv2.imread('car_test2.jpg', 0)



cv2.imshow('im1',im1)

cv2.imshow('im2',im2)



k = cv2.waitKey(0)

if k == ord('s'):

    cv2.imwrite('test00.png', im1)

    cv2.destroyAllWindows()


im1.shape()



 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小聪民

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值