计算机视觉+Numpy和OpenCV入门

ops/2025/2/22 12:15:59/

Day 1:Python基础+Numpy和OpenCV入门

  1. Python基础

    • 变量与数据类型、函数与类的定义、列表与字典操作
    • 文件读写操作(读写图像和数据文件)

    练习任务:写一个Python脚本,读取一个图像并保存灰度图像。

    import cv2
    img = cv2.imread('image.jpg')
    gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
    cv2.imwrite('gray_image.jpg', gray)
  2. Numpy基础

    • 数组创建与索引
    • 矩阵运算(矩阵乘法、转置、逆矩阵计算)

    练习任务:利用Numpy生成一个随机矩阵,计算其特征值和特征向量。

读取一个图像并保存灰度图像。

# 练习任务:写一个Python脚本,读取一个图像并保存灰度图像。
# 1. 读取图像
# 2. 将图像转换为灰度图像
# 3. 保存灰度图像
# 提示:使用OpenCV库
# 4. 保存灰度图像
# 提示:使用OpenCV库
# 5. 显示原始图像和灰度图像
# 提示:使用matplotlib库
# 6. 保存原始图像和灰度图像
# 提示:使用matplotlib库import cv2
import matplotlib.pyplot as plt
import numpy as np# 读取图像
img = cv2.imread('cat.jpg')# 将图像转换为灰度图像
gray_img = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 保存灰度图像
cv2.imwrite('gray_cat.jpg', gray_img)# 显示原始图像和灰度图像
plt.subplot(1, 2, 1)
plt.imshow(cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
plt.title('Original Image')
plt.axis('off')plt.subplot(1, 2, 2)
plt.imshow(gray_img, cmap='gray')
plt.title('Gray Image')
plt.axis('off')plt.show()# 保存原始图像和灰度图像
plt.imsave('original_cat.jpg', cv2.cvtColor(img, cv2.COLOR_BGR2RGB))
plt.imsave('gray_cat.jpg', gray_img, cmap='gray')

Numpy基础

# 20250210
#Numpy基础
# - 数组创建与索引
# - 矩阵运算(矩阵乘法、转置、逆矩阵计算)# > 练习任务:利用Numpy生成一个随机矩阵,计算其特征值和特征向量。
# 1. 生成一个3x3的随机矩阵
# 2. 计算矩阵的特征值和特征向量
# 3. 打印特征值和特征向量
# 提示:使用Numpy库import numpy as np# 创建一个包含5个元素的一维数组
arr1 = np.array([1, 2, 3, 4, 5])
print(arr1)
# [1 2 3 4 5]# 创建一个包含3x3个元素的二维数组
arr2 = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
print(arr2)
# [[1 2 3] 
#  [4 5 6] 
#  [7 8 9]]# 创建一个包含3x3个元素的随机矩阵
arr3 = np.random.rand(3, 3)
print(arr3)
# [[0.43466011 0.11696293 0.08589901]
#  [0.43506184 0.96955457 0.94011666]
#  [0.0907567  0.71107309 0.2533223 ]]print(arr1[0])  # 访问数组的第一个元素
print(arr2[1, 2])  # 访问第二行第三列的元素
print(arr3[0, 0])  # 访问随机矩阵的第一个元素
# 1
# 6
# 0.434660114961665# 矩阵运算(矩阵乘法、转置、逆矩阵计算)# 创建两个矩阵
A = np.array([[1, 2], [3, 4]])
B = np.array([[5, 6], [7, 8]])# 矩阵乘法
result = np.dot(A, B)
print(result)
# [[19 22]
#  [43 50]]# 矩阵转置
A_transpose = A.T
print(A_transpose)
# [[1 3]
#  [2 4]]# 逆矩阵计算
A_inv = np.linalg.inv(A)
print(A_inv)
# [[-2.   1. ]
#  [ 1.5 -0.5]]# 计算矩阵的特征值和特征向量
A = np.array([[4, -2], [1, 1]])
eigenvalues, eigenvectors = np.linalg.eig(A)
print('特征值:', eigenvalues)
print('特征向量:', eigenvectors)
# 特征值: [3. 2.]
# 特征向量: 
#  [[0.89442719 0.70710678]
#  [-0.4472136  0.70710678]]# 总结
# Numpy数组创建与索引:通过 np.array() 创建数组,可以进行索引操作获取特定的元素。
# 矩阵运算:
# 矩阵乘法使用 np.dot() 或 @;
# 矩阵转置使用 .T;
# 矩阵的逆使用 np.linalg.inv()。
# 特征值与特征向量:通过 np.linalg.eig() 可以计算矩阵的特征值和特征向量。


http://www.ppmy.cn/ops/159765.html

相关文章

SpringBoot:解决前后端请求跨域问题(详细教程)

文章目录 一、前言二、解决方式 2.1 使用 CrossOrigin 注解(简单方便,适用于单个或少量接口)2.2 全局配置跨域(适用于整个项目中大量接口都需要跨域的情况)2.3 使用过滤器来处理跨域(更底层的实现方式&…

WebMvcConfigurer 介绍

WebMvcConfigurer 介绍 1. 什么是WebMvcConfigurer 介绍2. WebMvcConfigurer接口常用的方法3. 使用WebMvcConfigurer实现跨域4. 使用WebMvcConfigurer配置拦截器5. 使用WebMvcConfigurer配置静态资源5.1 配置外部目录(本地文件系统)详细解释 6. 使用 Web…

高电服务器托管:企业IT基础设施的可靠之选

高电服务器托管服务,是指企业将自身高耗电的服务器设备或算力服务器设备交由专业托管公司进行管理和维护的一种服务模式。托管公司提供包括安全机房环境、网络设备、系统软件以及专业技术人员等全方位支持,使企业能够专注于核心业务的开发和运营。 高电…

详解AbstractQueuedSynchronizer(AQS)源码

引言 上篇文章讲解了CountDownLatch源码,底层是继承了AQS基类调用父类和重写父类方法实现的,本文将简介AQS源码和架构设计,帮助我们更深入理解多线程实战。 源码架构 1. 状态变量 state AQS 使用一个 int 类型的变量 state 来表示同步状态…

A与B组件自动对齐与组装,无映射直接补偿。

网上针对组装的从视觉到控制动作,要不就是收费,要不就是简单介绍。这么详细的比较难找~ 手下留情,不喜勿喷! Show time~ 分步解决方案: 标定阶段(Calibration) 9点张氏标定(每个位置A1、A2、B1、B2): 使用机械手在相机视野内沿Z字形路径移动,覆盖9个点(XY方…

CTF-内核pwn入门1: linux内核模块基础原理

本文由A5rZ在2025-2-18-21:00编写 1.可加载内核模块是什么? 内核可加载模块(*.ko 文件)是内核的一种扩展机制,可以在不重启系统的情况下加载和卸载代码。它们允许动态地向内核添加新的功能或支持。 以下是一些内核模块常见的功能&…

[qt5学习笔记]Application Example示例程序源码解析

开发环境问题 vs2022下直接打开ui、ts文件失败 解决办法如下图, 设置designer独立运行。估计是嵌入运行存在些许bug。 同理,ts编辑工具linguist也存在这个问题。 qrc rc的编辑嵌入编辑都正常,但分离式更稳定可靠。 qt creator编译失败 原…

在华为云部署应用,通过阿里云代理调用第三方接口的利弊与解决方案

以下是一篇针对“在华为云上部署应用,通过阿里云代理服务器调用第三方接口”所做的问答与分析整理而成的博文示例,供您发布或分享。内容涵盖了方案现状、主要弊端以及详细的优化与解决思路。 在华为云部署应用,通过阿里云代理调用第三方接口的利弊与解决方案 一、背景介绍 …