python-opencv Tutorials 一码人翻译(2)GUI特性——读取图片,显示图片,保存图片

目标

      学会读取、显示、保存图片

      学会使用三个函数  cv.imread(), cv.imshow() , cv.imwrite  ()

  • 读取图片

使用cv.imread()函数来读取图像。

(1)首先保证图像应该在工作目录中,或者给出完整的图像路径。

(2)确定第二个参数,是一个标志,它指定了图像应该被读取的方式。除了这三种标志之外,可以分别传递整数1、0或-1。

cv.IMREAD_COLOR:加载一个彩色图像。任何图像的透明度都将被忽略。它是默认的标志。  (1)

cv.IMREAD_GRAYSCALE:在灰度模式下加载图像                                                                    ( 0)

cv.IMREAD_UNCHANGED:加载图像,包括alpha通道                                                              (-1)

import numpy as np     #numpy简写np
import cv2 as cv       #cv2简写cv

# Load an color image in grayscale
img = cv.imread('lenna.jpg',0)   #读入灰度图像,取名叫img
a = cv.imread('lenna.jpg',1)      #读入彩色图像,取名叫a
b = cv.imread('lenna.jpg',-1)     #加载图像,包括alpha通道,取名叫b
  • 显示一个图像

使用cv.imshow()函数在窗口中显示一个图像。这个窗口自动符合图像的大小。

第一个参数是一个窗口名,就带引号那个,它是一个字符串。

第二个是我们的对象。可以创建尽可能多的窗口,但是使用不同的窗口名称。

cv.imshow('a',a)                   #显示a所代表的图片,对话框题目叫a
cv.imshow('b',b)                 #显示b所代表的图片a,对话框题目叫b
cv.imshow('imag',img)           #显示img所代表的图片,对话框题目叫img

cv.waitKey(0)                    #是一个键盘绑定函数
cv.destroyAllWindows()

  • waitkey()

waitkey()是一个键盘绑定函数。它的参数是几毫秒的时间。该函数等待任何键盘事件的指定毫秒。如果你在那个时间按下任何键,程序就会继续。如果0被传递,它将无限期地等待一个键击。它还可以被设置为检测特定的键击,例如,如果键a被按下,我们将在下面讨论。

import numpy as np
import cv2 as cv

img = cv.imread('lenna.jpg',0)
cv.imshow('image',img)
k = cv.waitKey(0)
if k == 27:         # wait for ESC key to exit
    cv.destroyAllWindows()
elif k == ord('s'): # wait for 's' key to save and exit
    cv.imwrite('messigray.png',img)
    cv.destroyAllWindows()

在键入s或者esc的时候要把鼠标放到窗口上

保存结果

小贴士

除了绑定键盘事件之外,这个函数还处理许多其他GUI事件,所以您必须使用它来实际显示图像。

cv.destroyallwindows()只是破坏了我们创建的所有窗口。如果您想要破坏任何特定的窗口,请使用cv.销毁窗口()函数,您将确切的窗口名称作为参数传递。

小贴士

有一个特殊的情况,您可以在以后创建一个窗口并将图像加载到它。在这种情况下,您可以指定窗口是否可调整。它是由函数cv.namedWindow()完成的。默认情况下,旗帜是cv.WINDOW_AUTOSIZE.。但是如果你指定标记为cv.WINDOW_NORMAL,你可以调整窗口大小。当图像在维度上太大,并在窗口中添加跟踪条时,它将会很有帮助。

cv.namedWindow('image', cv.WINDOW_NORMAL)#生成一个可以移动的大小的窗口
cv.imshow('image',img)
cv.waitKey(0)

 鼠标拖动能改变窗口大小和形状

  • 保存图片

保存图片用cv.imwrite()

引号里是名字

后面是对象

cv.imwrite('lenna.png',img)     #保存成lenna。png格式

猜你喜欢

转载自blog.csdn.net/qq_41905045/article/details/81203766
今日推荐