• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    Python-OpenCV:cv2.imread(),cv2.imshow(),cv2.imwrite()的区别

    为什么使用Python-OpenCV?

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

    基本操作

    1、图像读入

    使用函数cv2.imread(filepath,flags) 读入图像。这幅图像应该在此程序的工作路径,或者给函数提供完整路径,第二个参数是要告诉函数应该如何读取这幅图片,可省略。

    filepath:要读入图片的完整路径 flags:读入图片的标志

    import cv2
    import numpy as np
    img = cv2.imread('1.jpg', cv2.IMREAD_GRAYSCALE)
    

    2、显示图片

    使用函数cv2.imshow(wname,img)显示图像,第一个参数是显示图像的窗口的名字,第二个参数是要显示的图像(imread读入的图像),窗口大小自动调整为图片大小。

    cv2.imshow('image',img)
    cv2.waitKey(0)
    cv2.destroyAllWindows()   #cv2.destroyWindow(wname)
    

    3、保存图片

    使用函数cv2.imwrite(file,img,num)保存一个图像。第一个参数是要保存的文件名,第二个参数是要保存的图像。可选的第三个参数,它针对特定的格式:对于JPEG,其表示的是图像的质量,用0 - 100的整数表示,默认95;对于png ,第三个参数表示的是压缩级别,默认为3。

    注意:

    cv2.imwrite('1.png',img, [int( cv2.IMWRITE_JPEG_QUALITY), 95])
    cv2.imwrite('1.png',img, [int(cv2.IMWRITE_PNG_COMPRESSION), 9])

    变换操作

    1、翻转图片

    使用函数cv2.flip(img,flipcode)翻转图像,flipcode控制翻转效果。

    imgflip = cv2.flip(img,1)
    

    2、复制图片

    imgcopy = img.copy()
    

    3、颜色空间转换

    注意,matplotlib 中图像通道为 RGB,而 OpenCV 中图像通道为 BGR。因此进行显示的时候,要注意交换通道的顺序。

    彩色图像转为灰度图像

    img2 = cv2.cvtColor(img,cv2.COLOR_RGB2GRAY) 
    

    灰度图像转为彩色图像

    img3 = cv2.cvtColor(img,cv2.COLOR_GRAY2RGB)
    

    4、裁剪图片

    裁剪出自己感兴趣的部分(ROI,region of interest),需要用到numpy的切片功能,因为OpenCV中,图像就是用numpy.ndarray存储的。

    可以先通过image.shape查看行列数

    print(image.shape)
    

    例如返回(708,1000,4)分别表示图片的高、宽和通道数。

    对图片的裁剪其实就是切片,例如

    #得到区域高100~800步长为2,宽200~600步长为1, 通道0
    image2 = image[100:800:2, 20:600:1, 0]
    
    
    #得到原图,通道2
    image3 = image[:, :, 2]
    
    

    综合示例

    读入一张图片并显示出来,经过操作后,选择退出或保存。

      import cv2
      import numpy as np
      
      img = cv2.imread('a.jpg')
      cv2.imshow('image',img)
      
      # Wait for keys to exit or save
      k = cv2.waitKey(0)
      if k == 27:                 
         cv2.destroyAllWindows()
     elif k == ord('s'):        
         cv2.imwrite('save_image.jpg', img)
         cv2.destroyAllWindows()
    

    ord('s')表示返回字符s的ASCII值,ASCII值27对应‘Esc'

    参考链接:

    1、https://blog.csdn.net/fu6543210/article/details/80835280

    2、http://www.runoob.com/python/python-func-ord.html

    到此这篇关于Python-OpenCV:cv2.imread(),cv2.imshow(),cv2.imwrite()的区别的文章就介绍到这了,更多相关OpenCV cv2.imread(),cv2.imshow(),cv2.imwrite()内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    您可能感兴趣的文章:
    • Python中的imread()函数用法说明
    • 解决python cv2.imread 读取中文路径的图片返回为None的问题
    • Python imread、newaxis用法详解
    • 解决python测试opencv时imread导致的错误问题
    • 解决Python下imread,imwrite不支持中文的问题
    • python imread函数详解
    上一篇:Python爬虫基础讲解之scrapy框架
    下一篇:Python-OpenCV中的cv2.inpaint()函数的使用
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    Python-OpenCV:cv2.imread(),cv2.imshow(),cv2.imwrite()的区别 Python-OpenCV,cv2.imread,cv2.imshow,