学习-task01

  • 思而不学 犹豫不决 浪费时间
  • 学而不思 三心二意 效率低下

1 Opencv安装

pip insatll opencv-python

2 图像概述

  • 参考链接:https://blog.csdn.net/wohu1104/article/details/86485447

  • 生活中图像都是由 RGB 三原色构成的,计算机中 RGB 这三个颜色的取值通常是在 0-255 之间

    • R 表示红色(Red)
    • G 表示绿色 (Green)
    • B 表示蓝色(Blue)
  • 彩色图片有三个通道,所以属于三通道图片。

    • 计算机中的像素值通常是用 8 位的无符号整型(unit8)表示,取值范围是 0-255
    • 假设将图片颜色从黑到白分成 256 级,即通常说的黑白图片,也叫单通道图片,0 表示最黑,1 表示最白。
  • RGB 的构成示例 (0, 255, 255)

    • 第一个元素表示红色的数值
    • 第二个元素表示绿色的数值
    • 第三个元素表示蓝色的数值
  • 每个图像都是由于很多个 3 个通道的彩色像素组成,可以将图像看成一个矩阵,其中每个像素对应矩阵中的一个位置,譬如:

    • 图片左上角的像素点位置是(0, 0)
    • 图片右上角的像素点位置是(1079, 0)
    • 图片左下角的像素点位置是(0, 1439)
    • 图片右下角的像素点位置是(1079, 1439)

2 第一个cv小程序:

2.1 读取图像并显示
  • 读取图像并显示

    • 1、加载图像: cv2.imread(img_path, read_type),read_type: 默认读入彩色图像,0读入灰度图像

    • 2、创建一个GUI窗口,用来显示图片,使用到的函数是:cv2.namedWindow()

      • 调整窗口大小:默认参数cv2.WINDOW_AUTOSIZE 不可调整窗口大小;cv2.WINDOW_NORMAL 可以调整窗口大小
    • 3、通过图像变量,加载显示图像:cv2.imshow()

    • 4、等待,用户下一步操作:cv2.waitKey() 如果设置这个函数的参数为0,那它将会无限期的等待键盘输入。

    • 5、删除我们建立的所有窗口,释放资源:cv2.destroyAllWindows(),cv2.destroyWindow() 用于删除特定的窗口,可以使用在括号内输入你想删除的窗口名。

  • 代码实例

# 导入模块
import cv2 as cv

src = cv.imread('test.jpg')
cv.namedWindow('input image', cv.WINDOW_NORMAL)
cv.imshow('input image', src)
cv.waitKey(0)
cv.destroyAllWindows()
2.2 保存图像
  • 保存图像:使用函数 cv2.imwrite(filename, img)
    • 第一个参数是要保存的文件名
    • 第二个参数是图像在内存中的对象
cv.imwrite('test-save.png', img)
2.3 demo小程序
  • 加载灰度图
  • enter不保存图片,直接退出;按s保存图片,并退出
# 导入模块
import cv2 as cv

img = cv.imread('test.jpg', 0)  # 加载灰度图
cv.namedWindow('input image', cv.WINDOW_NORMAL)
cv.imshow('input image', img)
key = cv.waitKey(0)

if key == 27:  # 27 即是 enter
    cv.destroyAllWindows()
elif key == ord('s'):  # 按s保存退出
    cv.imwrite('test-save1.png', img)  # 保存灰度图
    cv.destroyAllWindows()

3 图像扩展缩放

  • 扩展缩放只是改变图像的尺寸大小;

  • OpenCV 的函数 cv2.resize() 可以实现这个功能,图像的尺寸可以自己手动设置,也可以指定缩放因子。

  • 我们可以选择使用不同的插值方法:

    • 在缩放时推荐使用 cv2.INTER_AREA,

    • 在扩展时推荐使用 v2.INTER_CUBIC(慢) 和 v2.INTER_LINEAR。

  • 默认情况下所有改变图像尺寸大小的操作使用的插值方法都是 cv2.INTER_LINEAR

# 导入模块
import cv2 as cv

img = cv.imread('test.jpg')  # 加载图像
cv.imshow('origin', img)

# 设置缩放因子
# 0.75倍缩放
res = cv.resize(img, None, fx=0.75, fy=0.75, interpolation=cv.INTER_AREA)  # 缩放
cv.imshow('input image INTER_AREA', res)  # 显示缩放后图像

res = cv.resize(img, None, fx=0.75, fy=0.75, interpolation=cv.INTER_NEAREST)  # 缩放
cv.imshow('input image INTER_NEAREST', res)  # 显示缩放后图像

# 直接设置输出图像尺寸
height, width = img.shape[:2]  # 432 432
print(height, width)
# 2倍扩展
res = cv.resize(img, (2 * width, 2 * height), interpolation=cv.INTER_CUBIC)  # 扩展
cv.imshow('input image INTER_CUBIC', res)  # 显示扩展后图像
res = cv.resize(img, (2 * width, 2 * height), interpolation=cv.INTER_LINEAR)  # 扩展
cv.imshow('input image INTER_LINEAR', res)  # 显示扩展后图像
res = cv.resize(img, (2 * width, 2 * height), interpolation=cv.INTER_LANCZOS4)  # 扩展
cv.imshow('input image INTER_LANCZOS4', res)  # 显示扩展后图像

cv.waitKey(0)
cv.destroyAllWindows()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值