使用opencv-python读取图片数据。并使用numpy库对图片的矩阵数据进行变换处理,实现平移旋转等操作。
OpenCV用C++语言编写,它的主要接口也是C++语言,但是依然保留了大量的C语言接口。 (CV:Computer Vision,计算机视觉)。此外,OpenCV还提供了Java、python、cuda等的使用接口、机器学习的基础算法调用。
pip install opencv-python
pip install opencv-contrib-python
pip uninstall opencv-python
import cv2
1、 cv2.imread(filepath,flags) #读入一张图像
2、 cv2.imshow(wname,img) #显示图像
3、 cv2.waitKey(n) #按键等待函数
cv2.imshow('image',img)
cv2.waitKey(0) #等待键盘输入,单位为毫秒,即等待指定的毫秒数看是否有键盘输入,若在等待时间内按下任意键则返回按键的ASCII码,程序继续运行。
#若没有按下任何键,超时后返回-1。参数为0表示无限等待。不调用waitKey的话,窗口会一闪而逝,看不到显示的图片。
cv2.destroyAllWindow() #销毁所有窗口
cv2.destroyWindow(wname) #销毁指定窗口
4、cv2.imwrite(file,img,num) #保存一个图像
cv2.IMWRITE_JPEG_QUALITY
类型为 long ,必须转换成 intcv2.IMWRITE_PNG_COMPRESSION
, 从0到9 压缩级别越高图像越小。cv2.imwrite('1.png',img, [int( cv2.IMWRITE_JPEG_QUALITY), 95])
cv2.imwrite('1.png',img, [int(cv2.IMWRITE_PNG_COMPRESSION), 9])
5、cvtColor(Mat src, Mat dst, int code) #颜色空间转换函数
可以实现RGB颜色向HSV,HSI等颜色空间转换,也可以转换为灰度图。
src:表示来源的矩阵。
dst:表示目的地的矩阵。
code:表示转换类型的整数代码
COLOR_RGB2GRAY
COLOR_RGB2HSV
COLOR_RGB2BGR
dstCn:用于指定目标图像的通道数,如果指定的值是默认值0,那么通道数将由输入图像和颜色转换码决定。可以不写。
参考:opencv学习笔记(三)颜色转换 cvtColor
6、img.copy() #图像复制
7、cv2.resize(image, image2,dsize) #图像缩放
输入原始图像,输出新图像,图像的大小
8、cv2.flip(img,flipcode) #图像翻转。
9、cv2.getRotationMatrix2D(center,angle,scale) #图像翻转。
10、 cv2.convertScaleAbs(depth_image, alpha) 通过线性变换将数据转换成8位[uint8]
通过线性变换将数据转换成8位[uint8]
公式为:有效距离*alpha=255。
如果计算后的值大于255,则将其取为255(8位最大值)。
参考:python opencv 4.1.0 cv2.convertScaleAbs()函数 (通过线性变换将数据转换成8位[uint8])
参考:【图像处理】——灰度变换心得(cv2.normalize规范化0-255,cv2.convertScaleAbs(new_img)转为8位图))
11、 cv2.normalize(array,None,0,255,cv2.NORM_MINMAX) 将图片的值进行范围调整
X ^ 表示矩阵中任意一点归一化之后的值
x 表示矩阵中的所有原始值
min,max 分别代表矩阵中的最大值和最小值
max′,min′ 分别表示放缩的目标范围中的最大和最小值
除此之外,还有其他的归一化和放缩的选项,例如:
cv2.NORM_INF:归一化数组的(切比雪夫距离)L∞范数(绝对值的最大值)
cv2.NORM_L1 : 归一化数组的(曼哈顿距离)L1-范数(绝对值的和)
cv2.NORM_L2: 归一化数组的(欧几里德距离)L2-范数
参考:将图片的值进行范围调整 cv2.normalize()
参考:【图像处理】——灰度变换心得(cv2.normalize规范化0-255,cv2.convertScaleAbs(new_img)转为8位图))
参考:cv2库(OpenCV,opencv-python)的简介、安装、使用方法(常见函数、方法等)最强详细攻略
参考:【python】库丨opencv-python丨