zoukankan      html  css  js  c++  java
  • 『OpenCV3』简单图片处理

    cv2和numpy深度契合,其图片读入后就是numpy.array,只不过dtype比较不常用而已,支持全部数组方法

    数组既图片

    import numpy as np
    import cv2
    img = np.zeros((3, 3), dtype=np.uint8)  # numpy数组使用np.uint8编码就是cv2图片格式
    print(img, '
    ', img.shape, '
    ')
    img = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)  # 单通道转化BGR格式3通道
    print(img, '
    ', img.shape)
    

     [[0 0 0]
     [0 0 0]
     [0 0 0]]
     (3, 3)

    [[[0 0 0]
      [0 0 0]
      [0 0 0]]

     [[0 0 0]
      [0 0 0]
      [0 0 0]]

     [[0 0 0]
      [0 0 0]
      [0 0 0]]]
     (3, 3, 3)

     读写图片文件

    image = cv2.imread('img1.jpg')   # 读文件
    cv2.imwrite('img1.png', image)   # 写文件
    print(image.shape)
    

     (2716, 1920, 3)

    灰度模式读取

    grayImage = cv2.imread('img2.jpg', cv2.IMREAD_GRAYSCALE)  # 读取为灰度模式
    cv2.imwrite('img2_gray.png', grayImage)
    

     True

    数组or图片属性查询

    img = cv2.imread('img1.jpg')  # 图片属性查询
    print(img[0, 0])
    print(img.shape)
    print(img.size)
    print(img.dtype)
    

     [18 18 18]
    (2716, 1920, 3)
    15644160
    uint8

    其他演示

    cv2.cvtColor(img,cv2.COLOR_BAYER_BG2BGR)

    img.item(0,0)

    img.itemset((0,0),0)

    cv2.imshow('my image',img) 

    cv2.waitKey()

    cv2.destroyAllWindows()

     1 # coding=utf-8
     2 import cv2
     3 import numpy as np
     4 
     5 # array数组生成
     6 img = np.zeros((3,3),dtype=np.uint8)
     7 print img.shape
     8 
     9 # array数组转化为BGR模式
    10 # 我也不懂为什么不用RGB而用BGR这么蹩脚的用法
    11 img = cv2.cvtColor(img,cv2.COLOR_BAYER_BG2BGR)
    12 print img.shape
    13 
    14 # 读取图片,左上像素点改写为蓝色,保存
    15 img = cv2.imread('beauti.jpeg')
    16 img[0][0] = [255,0,0]
    17 cv2.imwrite('MyPic.png',img)
    18 
    19 # 丢失颜色信息,左上像素点改写为黑色,保存
    20 img = cv2.imread('beauti.jpeg',cv2.IMREAD_GRAYSCALE)
    21 print img.shape
    22 img[0][0] = 0
    23 cv2.imwrite('MyPic-gray.png',img)
    24 
    25 # 使用array.item和array.itemset优雅的重写上面代码
    26 img = cv2.imread('beauti.jpeg',cv2.IMREAD_GRAYSCALE)
    27 print img.shape
    28 #img[0][0] = 0
    29 print img.item(0,0)
    30 img.itemset((0,0),0)
    31 cv2.imwrite('MyPic-gray.png',img)
    32 
    33 # 去掉绿色通道
    34 img = cv2.imread('beauti.jpeg')
    35 img[:,:,1] = 0
    36 cv2.imwrite('no_green.png',img)
    37 print img.shape,img.size,img.dtype
    38 
    39 img = cv2.imread('beauti.jpeg')
    40 # 显示图片,必须输入两个参数
    41 cv2.imshow('my image',img)
    42 # 窗口展示时间
    43 cv2.waitKey()
    44 # 释放窗口
    45 cv2.destroyAllWindows()
  • 相关阅读:
    ActionResult 的返回类型
    MVC4.0中ViewBag、ViewData、TempData和ViewModel几种传值方式的区别
    抛出异常的区别 throw 和throw ex
    字段的重复校验问题
    bootstrap 动态添加验证项和取消验证项
    VS快捷键大全(转)
    数组、List和ArrayList的区别
    处理两个泛型集合差异化
    传参的两种方式
    tomcat中web项目编译后的结构
  • 原文地址:https://www.cnblogs.com/hellcat/p/6894606.html
Copyright © 2011-2022 走看看