OpenCV图像处理入门----计算机视觉第一步

什么是计算机视觉

  • 机器视觉是人工智能的一个分支。直白的说就是用机器来代替人类看到的东西做思考和测量,然后做出正确的判断。

  • 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()

OpenCV图像处理入门----计算机视觉第一步_第1张图片

OpenCV图像处理入门----计算机视觉第一步_第2张图片

读取方式:

cv2.IMREAD_COLOR : 以彩图的方式加载,会忽略透明度(默认方式)
cv2.IMREAD_GRAYSCALE: 以灰色图片方式加载
cv2.IMREAD_UNCHANGED: 直接加载,透明度会得到保留    

OpenCV图像处理入门----计算机视觉第一步_第3张图片

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()

OpenCV图像处理入门----计算机视觉第一步_第4张图片

你可能感兴趣的:(opencv入门,计算机视觉,python,opencv)