python+OpenCV图像处理(一)读取、复制、显示、保存

前 言

       从2017年入坑人工智能领域开始,就被这一领域深深的所吸引,虽然到现在已经踩了不少坑,但总算有了不少的收获,深感不虚此行,借助强大的python让我快速的向着这一领域靠近,现在流行比较广的人工智能应用,比如:图像识别,语音识别,文本情感分析,人体行为分析等等。在金融、安全、智能推荐等等,凡是我们能想到的领域,都可以安插人工智能的应用,对推进万物互联、万物互通的未来智能具有深刻影响,可以说是大势所趋。

       对于我们普通人来说,若不改变,很有可能被机器人所淘汰。虽然我有时自命不凡,但越是成长,越是深感力不从心,这让我明白了“不积跬步,无以至千里”的深刻内涵。今日,独上高楼,望断天涯路,看未来,来了。

      由于人类语言的千变万化,和对语言分析应用的单一,导致在语音、语义方面远不如图像分析应用的广泛。OpenCV是一个专门对图像进行处理的库,在此后的学习中,我们会深刻认识到它的强大。借助强大的互联网,集万众之所长,完成学习任务。

图像的读取、复制、显示、保存

(一)认识图像、读取图像


所谓的图像就是一个数组,所有对图像的处理就是对数字的处理

# 导入包
import cv2
import numpy as np
img = cv2.imread('rose.jpg')
print(img)
print(np.shape(img))

输出结果为:

[[[ 65 134 107]
  [ 65 134 107]
  [ 65 134 107]
  ..., 
  [ 33  90  69]
  [ 33  90  69]
  [ 31  90  69]]

 [[ 64 133 106]
  [ 64 133 106]
  [ 64 133 106]
  ..., 
  [ 33  90  69]
  [ 33  90  69]
  [ 31  90  69]]

 [[ 64 132 107]
  [ 64 132 107]
  [ 63 131 106]
  ..., 
  [ 33  90  69]
  [ 33  90  69]
  [ 31  90  69]]

 ..., 
 [[  1  75  49]
  [  2  76  50]
  [  0  77  50]
  ..., 
  [ 24  62  66]
  [ 25  63  67]
  [ 27  65  69]]

 [[  1  75  49]
  [  2  76  50]
  [  0  77  50]
  ..., 
  [ 19  57  61]
  [ 21  59  63]
  [ 22  60  64]]

 [[  1  75  49]
  [  2  76  50]
  [  0  77  50]
  ..., 
  [ 17  55  59]
  [ 19  57  61]
  [ 20  58  62]]]
(972, 1024, 3)

(二)显示图像

接下来我们来让读取的图像显示出来,刚才的图片太大了,我将图片弄小了一些

# 读取图片
img = cv2.imread('rose1.jpg')
# 先创建一个窗口
cv2.namedWindow('Image')
# 在窗口中显示图像
cv2.imshow('Image', img)
# 最后还要写一句代码,这样就可以使窗口始终保持住
cv2.waitKey(0)

运行结果为:

在读取图片中,imread(‘图片地址’,‘模式参数’)函数可以来控制所读取图片的模式。

模式参数:

0:读入的为灰度图像(即使读入的为彩色图像也将转化为灰度图像)

1:读入的为彩色图像(默认)

img = cv2.imread('rose1.jpg', 0)


cv2.destroyAllWindows()

最后别忘了释放窗口,养成良好习惯。

(三)复制图像

img1 = img.copy()

(四)保存图像

保存图像也非常简单

cv2.imwrite('rose_copy.jpg', img1)

第一个参数是保存图像的地址以及文件的名字,第二个参数是所要保存的图像数组。

其实它还有第三个参数,针对特定的图像格式,对于JPEG,其表示的是图片的quality,用0-100的整数表示,默认为95。当然,你如果把参数设置的超过100也不会出错,但到100已经达到图片本身的最高质量了。cv2.IMWRITE_JPEG_QUALITY的类型为int类型,符合图像数组为整数的要求,不用再更改类型。

cv2.imwrite('rose_copy1.jpg', img1, [cv2.IMWRITE_JPEG_QUALITY, 2])

对于PNG,第三个参数表示的是压缩级别。cv2.IMWRITE_PNG_COMPRESSION,从0到9,压缩级别越高,图像尺寸越小。默认级别为3.

cv2.imwrite("rose1_test.png", img, [cv2.IMWRITE_PNG_COMPRESSION, 0])
cv2.imwrite("rose2_test.png", img, [cv2.IMWRITE_PNG_COMPRESSION, 9])

其实,还有很多有趣的操作,就不介绍了,需要用的时候在进行学习,知道这两个比较常用的。


猜你喜欢

转载自blog.csdn.net/qq_40962368/article/details/80444144