Day 1:Python基礎+Numpy和OpenCV入門
-
Python基礎
- 變量與數據類型、函數與類的定義、列表與字典操作
- 文件讀寫操作(讀寫圖像和數據文件)
練習任務:寫一個Python腳本,讀取一個圖像并保存灰度圖像。
import cv2 img = cv2.imread('image.jpg') gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) cv2.imwrite('gray_image.jpg', gray)
-
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() 可以計算矩陣的特征值和特征向量。