计算机视觉——opencv快速入门(二) 图像的基本操作

07-09 1448阅读

前言

上一篇文章中我们介绍了如何配置opencv,而在这篇文章我们主要介绍的是如何使用opencv来是实现一些常见的图像操作。

图像的读取,显示与存储

读取图像文件

在opencv中我们利用imread函数来读取图像文件,函数语法如下:

image=cv2.imread(path,flag)

参数说明:

  • image:返回来的所读取的对象,如果读取失败,返回None.
  • path:图像路径
  • flag:可选参数,又可叫图像旗标,用来说明图像读取的格式,省略则按照默认图像格式来读取。

    下面我们来看一个简单的示例:

    import cv2
    cv2.namedWindow("image", cv2.WINDOW_NORMAL)
    img = cv2.imread(r'C:\\Users\\fengxu\Desktop\\Screenshots\\1b8fc10d60dbe62d15237451f13408a1.jpg')
    cv2.resizeWindow("image", 600,400)
    cv2.imshow("image", img)
    # 等待按键后关闭窗口,否则imshow的窗口会立即消失
    cv2.waitKey(0)
    cv2.destroyAllWindows()
    

    这就是一个非常简单的加载图像的代码了。

    图像的显示与图像窗口的关闭

    基于opencv实现图像的显示

    在opencv中我们可以基于cv.imshow()函数将读取的图像对象显示在opencv窗口上,函数定义如下:

    cv2.imshow(window_name,image)
    

    参数说明:

    • window_name:要显示窗口的标题
    • image:要显示的图像对象

      示例代码:

      import cv2
      # 创建一个可调整大小的窗口
      cv2.namedWindow("image", cv2.WINDOW_NORMAL)
      # 读取图像文件
      img = cv2.imread(r'./source/a.png')
      # 检查图像是否成功读取
      if img is None:
          print("无法读取图像文件,请检查路径是否正确。")
      else:
          # 显示图像
          cv2.imshow("image", img)
          cv2.waitKey(0)  # 等待按键输入,参数为0表示无限等待,直到按下任意键
          cv2.destroyAllWindows()  # 关闭所有OpenCV窗口
      

      运行结果:

      计算机视觉——opencv快速入门(二) 图像的基本操作

      如何关闭opencv窗口

      当我们将图片显示在opencv窗口后,除了点击关闭按钮关闭,还可以使用下列函数:

      cv2.destoryWindow(window_name);  # 删除指定窗口
      cv2.destoryAllWindows();		# 删除所有窗口
      

      控制按键事件

      opencv可以通过cv2.waitkey()函数来等待按键事件,函数语法如下:

      ret_key=cv2.waitkey(delay);
      

      参数说明:

      • ret_key:如果没有按下键盘上的值,返回值是-1,否则是按键对应的ASCII值
      • delay:单位为毫秒

        示例:

        • 5秒后关闭:
          import cv2
          # 创建一个可调整大小的窗口
          cv2.namedWindow("image", cv2.WINDOW_NORMAL)
          # 读取图像文件
          img = cv2.imread(r'./source/a.png')
          # 检查图像是否成功读取
          if img is None:
              print("无法读取图像文件,请检查路径是否正确。")
          else:
              # 显示图像
              cv2.imshow("image", img)
              cv2.waitKey(10000)  # 等待10秒
              cv2.destroyAllWindows()  # 关闭所有OpenCV窗口
          
          • 按q键退出
            import cv2
            # 创建一个可调整大小的窗口
            cv2.namedWindow("image", cv2.WINDOW_NORMAL)
            # 读取图像文件
            img = cv2.imread(r'./source/a.png')
            # 检查图像是否成功读取
            if img is None:
                print("无法读取图像文件,请检查路径是否正确。")
            else:
                # 显示图像
                cv2.imshow("image", img)
                ret_key=cv2.waitKey(0)  
                if ret_key == ord('q'):   # # 如果按下q键,则退出
                    cv2.destroyAllWindows()  # 关闭所有OpenCV窗口
            

            调整图像窗口的大小

            我们在使用imshow函数创建窗口显示图像时,窗口的大小是固定,但是我们可以通过namedWindow()函数建立未来要显示图像的窗口。

            cv2.namedWindow(window_name,flag)
            
            • flag:窗口旗标参数,类型有:

              • cv2.WINDOW_NORMAL:用户可以自行调整窗口
              • cv2.WINDOW_AUTOSIZE:自动调整大小
              • cv2.WINDOW_OPENGL:支持以OPENGL的方式打开窗口

                图像的存储

                在opencv中我们可以使用imwrite函数存储图像,函数声明如下:

                ret=cv2.imwrite(path,image)
                

                成功返回True,失败返回False

                示例代码:

                import cv2
                # 创建一个可调整大小的窗口
                cv2.namedWindow("image", cv2.WINDOW_NORMAL)
                # 读取图像文件
                img = cv2.imread(r'./source/a.png')
                # 检查图像是否成功读取
                if img is None:
                    print("无法读取图像文件,请检查路径是否正确。")
                ret=cv2.imwrite("./source/output.png", img)
                if ret:
                    print("图像保存成功。")
                else:
                    print("图像保存失败。")
                cv2.waitKey(0)
                

                计算机视觉——opencv快速入门(二) 图像的基本操作

                运行后我们发现source文件夹下出现了我想要保存的结果

                课后练习

                选择一张图片,分别以灰色与彩色两种方式读取,同时以_color后缀存储彩色图片,_gray存储灰色照片

                # 彩色
                import cv2
                # 创建一个可调整大小的窗口
                cv2.namedWindow("image1", cv2.WINDOW_NORMAL)
                # 读取图像文件
                img1 = cv2.imread(r'./source/a.png')
                cv2.imshow("image1", img1)
                cv2.waitKey(0)
                # 检查图像是否成功读取
                if img1 is None:
                    print("无法读取图像文件,请检查路径是否正确。")
                ret=cv2.imwrite("./source/a_color.png", img1)
                if ret:
                    print("图像保存成功。")
                else:
                    print("图像保存失败。")
                
                # 灰色
                import cv2
                # 创建一个可调整大小的窗口
                cv2.namedWindow("image2", cv2.WINDOW_NORMAL)
                # 读取图像文件
                img2 = cv2.imread(r'./source/a.png', cv2.IMREAD_GRAYSCALE)
                cv2.imshow("image2", img2)
                cv2.waitKey(0)
                # 检查图像是否成功读取
                if img2 is None:
                    print("无法读取图像文件,请检查路径是否正确。")
                ret=cv2.imwrite("./source/a_gray.png", img2)
                if ret:
                    print("图像保存成功。")
                else:
                    print("图像保存失败。")
                
VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]