什么是计算机视觉
-
机器视觉是人工智能的一个分支。直白的说就是用机器来代替人类看到的东西做思考和测量,然后做出正确的判断。
-
OpenCV是一个基于BSD许可(开源)发行的跨平台计算机视觉库,可以运行在Linux、Windows、Android和Mac OS操作系统上。它轻量级而且高效——由一系列 C 函数和少量 C++ 类构成,同时提供了Python、Ruby、MATLAB等语言的接口,实现了图像处理和计算机视觉方面的很多通用算法。
opencv-python开始
1. 读取图片
cv2的imread方法:
参数1为图片路径
参数2为读取方式
-
cv2读取出的图片都是一个二维矩阵
-
通过shape属性查看图片的形状
-
元组内分别为高度、宽度和颜色通道,颜色通道为3是
rgb
-
cv2内不是常见的
rgb
而是反着的bgr
# 导包
import cv2
# 读取图片
img = cv2.imread('./lena.jpg')
print(img)
# (400, 400, 3)
print(img.shape)
# 展示图片 参数1为展示的窗口名称,参数2为图片矩阵
cv2.imshow('img1', img)
cv2.waitKey()
读取方式:
cv2.IMREAD_COLOR : 以彩图的方式加载,会忽略透明度(默认方式)
cv2.IMREAD_GRAYSCALE: 以灰色图片方式加载
cv2.IMREAD_UNCHANGED: 直接加载,透明度会得到保留
2. 写入文件
转为灰度图片的原理,和另存为图片
# 导包
import copy
import cv2
# 读取图片 cv2读取出的图片都是一个二维矩阵
img = cv2.imread('./lena.jpg', cv2.IMREAD_COLOR)
# 拷贝一个图片
img1 = copy.deepcopy(img)
# 获取到图片的高度和宽度
height, width = img1.shape[0:2]
# 遍历每一个像素点
for row in range(height):
for col in range(width):
# 获取到像素点的三原色
b, g, r = img1[row, col]
# 通过灰度公式转为灰度图像 赋值给图像
# 灰度公式 Gray = R*0.299 + G*0.587 + B*0.114
img1[row, col] = int(r) * 0.299 + int(g) * 0.587 + int(b) * 0.114
# 展示图像
cv2.imshow('img', img1)
cv2.waitKey()
# 保存图片为lena_gray
cv2.imwrite('./lena_gray.jpg', img1)
图片的像素和矩阵
-
当我们将一张图片不断放大之后,我们就可以看到这张图片上一个个小方块,这里面的每一个小方块我们就可以称之为像素点! 任何一张图片,都是有若干个这样的像素所构成的
-
而在opencv中所有的图片都是二维矩阵
import cv2
import numpy as np
# 生成形状为(400,400,3)的二维数组
# 因为三原色的取值范围为0~255 所以数据类型为uint8
src = np.zeros((400, 400, 3), np.uint8)
# 获取到高度和宽度
height, width = src.shape[0:2]
# 遍历每一个像素点
for row in range(height):
for col in range(width):
# 在第200行和201行转换颜色为(255,0,0) 因为是bgr所以为蓝色
if row == 200 or row == 201:
src[row, col] = (255, 0, 0)
cv2.imshow('src', src)
cv2.waitKey()