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

在这里插入图片描述

在这里插入图片描述

读取方式:

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

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值