当前位置: 首页 > news >正文

计算机视觉+Numpy和OpenCV入门

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.lryc.cn/news/539564.html

相关文章:

  • Vue 3 工程化打包工具:从理论到实践 (下篇)
  • java经验快速学习python!
  • 爬虫破解网页禁止F12
  • 从零开始构建一个语言模型中vocab_size(词汇表大小)的设定规则
  • Jenkins插件管理切换国内源地址
  • Q - learning 算法是什么
  • nasm - console 32bits
  • 11.编写前端内容|vscode链接Linux|html|css|js(C++)
  • 【deepseek-r1模型】linux部署deepseek
  • 【Github每日推荐】-- 2024 年项目汇总
  • C++中的.*运算符
  • 深度学习笔记——LSTM
  • spring boot知识点2
  • 【机器学习】CNN与Transformer的表面区别与本质区别
  • 框架篇 - Hearth ArcGIS 框架扩展(DryIoC、Options、Nlog...)
  • JUC并发—7.AQS源码分析三
  • windows系统本地部署DeepSeek-R1全流程指南:Ollama+Docker+OpenWebUI
  • 当C#邂逅Deepseek, 或.net界面集成deepseek
  • Cursor实战:Web版背单词应用开发演示
  • Kotlin Lambda
  • V4L2驱动之UVC
  • numpy(01 入门)
  • Chatgpt论文润色指令整理
  • vscode复制到下一行
  • Python天梯赛刷题-五分题(上)
  • 【优先级队列】任务分配
  • 设计模式之适配模式是什么?以及在Spring AOP中的拦截器链的使用源码解析。
  • Python 库自制 Cross-correlation 算法
  • C++(23):为类成员函数增加this参数
  • javaSE学习笔记23-线程(thread)-总结