『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, '\n', img.shape, '\n')
img = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)  # 单通道转化BGR格式3通道
print(img, '\n', 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()

 

posted @ 2017-06-20 15:12  叠加态的猫  阅读(2072)  评论(0编辑  收藏  举报