Python-OpenCV基础:图像的读写,尺寸和保存

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_31278903/article/details/84945001

为什么使用Python-OpenCV

虽然python 很强大,而且也有自己的图像处理库PIL,但是相对于OpenCV 来讲,它还是弱小很多。跟很多开源软件一样OpenCV 也提供了完善的python 接口,非常便于调用。OpenCV 的稳定版是2.4.8,最新版是4.0,包含了超过2500 个算法和函数,几乎任何一个能想到的成熟算法都可以通过调用OpenCV 的函数来实现,超级方便。

OpenCV的官方网站:

https://opencv.org/

一)工具

Python

Python 作为一种高效简洁的直译式语言非常适合我们用来解决日常工作的问题。而且它简单易学,初学者几个小时就可以基本入门。再加上Numpy 和matplotlib 这两个翅膀,Python 对数据分析的能力不逊于Matlab。Python 还被称为是胶水语言,有很多软件都提供了Python 接口。尤其是在linux 下,可以使用Python 将不同的软件组成一个工作流,发挥每一个软件自己最大的优势从而完成一个复杂的任务。比如我们可以使用Mysql 存储数据,使用R 分析数据,使用matplotlib 展示数据,使用OpenGL 进行3D 建模,使用Qt 构建漂亮的GUI。而Python 可以将他们联合在一起构建一个强大的工作流。

OpenCV

图像处理库

二)图像的基本操作

读取图片,显示尺寸

#读图片
img = cv2.imread("D:/Tmpfile/test1.jpg")  #根据路径读取图像
cv2.namedWindow("Image") #创建窗口
cv2.imshow("Image", img) #窗口显示
cv2.waitKey (0) #如果不添最后一句,在IDLE中执行窗口直接无响应
cv2.destroyAllWindows()

print(img.shape) #显示图片大小

【注】

cv2.waitKey() 是一个键盘绑定函数。需要指出的是它的时间尺度是毫秒级。函数等待特定的几毫秒,看是否有键盘输入。特定的几毫秒之内,如果按下任意键,这个函数会返回按键的ASCII 码值,程序将会继续运行。如果没有键盘输入,返回值为-1,如果我们设置这个函数的参数为0,那它将会无限期的等待键盘输入。它也可以被用来检测特定键是否被按下,例如按键a 是否被按下,这个后面我们会接着讨论。

cv2.destroyAllWindows() 可以轻易删除任何我们建立的窗口。如果 你想删除特定的窗口可以使用cv2.destroyWindow(),在括号内输入你想删 除的窗口名。

写图片

import cv2
#imwrite(filename, img[, params]) -> retval
imgPath = 'E:/test01.jpg' #图片的写入路径
#图片写入
cv2.imwrite(filename, img)
#第三个参数针对特定的格式: 
imgPath = 'E:/test01.jpg'
cv2.imwrite(imgPath, img, [int(cv2.IMWRITE_JPEG_QUALITY),100])
#对于JPEG,其表示的是图像的质量。
#用0-100的整数表示,数值越高质量越高,默认为95。
imgPath = 'E:/test01.png'
cv2.imwrite(imgPath, img, [int(cv2.IMWRITE_PNG_COMPRESSION),9]) 
#对于PNG,第三个参数表示的是压缩级别。
#从0到9,压缩级别越高,图像尺寸越小,默认级别为3。
#注意,cv2.IMWRITE_JPEG_QUALITY和cv2.IMWRITE_PNG_COMPRESSION类型为Long,必须转换成int。

保存图片

cv2.imwrite('lena.png',img)

【参考】

https://blog.csdn.net/eddy_zheng/article/details/48286735

https://blog.csdn.net/sunny2038/article/details/9057415

猜你喜欢

转载自blog.csdn.net/qq_31278903/article/details/84945001