天天看點

Python計算機視覺程式設計 第一章 基本的圖像操作和處理

作者:明政面朝大海春暖花開

以下是使用Python進行基本圖像操作和處理的示例代碼:

  1. 使用PIL庫加載圖像:
from PIL import Image

image = Image.open("image.jpg")
           
  1. 轉換圖像格式:
image.save("new_image.png")
           
  1. 建立縮略圖:
thumbnail = image.thumbnail((100, 100))
thumbnail.save("thumbnail.jpg")
           
  1. 複制和粘貼圖像區域:
# 建立一個新的圖像副本
copy_image = image.copy()

# 粘貼圖像區域
region = (100, 100, 200, 200)  # 定義區域的左上角和右下角坐标
paste_image = Image.new("RGB", (100, 100))
paste_image.paste(image.crop(region), (0, 0))

paste_image.save("paste_image.jpg")
           
  1. 調整尺寸和旋轉:
# 調整尺寸
resized_image = image.resize((500, 500))
resized_image.save("resized_image.jpg")

# 旋轉圖像
rotated_image = image.rotate(90)
rotated_image.save("rotated_image.jpg")
           

這些示例代碼示範了一些基本的圖像操作和處理技術,使用PIL庫可以友善地進行圖像處理和編輯。請注意,以上示例代碼僅供參考,具體的操作和處理取決于您的需求和圖像的特點。

以下是使用Python計算機視覺程式設計庫matplotlib進行圖像繪制、點和線繪制、圖像輪廓和直方圖繪制以及互動式标注的示例代碼:

  1. 繪制圖像:
import matplotlib.pyplot as plt
import cv2

# 讀取圖像
image = cv2.imread('image.jpg')

# 将BGR圖像轉換為RGB圖像
image_rgb = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)

# 繪制圖像
plt.imshow(image_rgb)
plt.axis('off')  # 關閉坐标軸顯示
plt.show()
           
  1. 繪制點和線:
import matplotlib.pyplot as plt

# 定義點和線的坐标
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]

# 繪制點和線
plt.plot(x, y, marker='o', linestyle='-', color='blue')
plt.xlabel('X軸')
plt.ylabel('Y軸')
plt.title('點和線示例')
plt.grid(True)
plt.show()
           
  1. 繪制圖像輪廓:
import matplotlib.pyplot as plt
import cv2

# 讀取圖像
image = cv2.imread('image.jpg')

# 将圖像轉換為灰階圖像
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# 提取圖像輪廓
contours, _ = cv2.findContours(gray, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

# 繪制圖像輪廓
plt.imshow(cv2.drawContours(image.copy(), contours, -1, (0, 255, 0), 2))
plt.axis('off')
plt.show()
           
  1. 繪制直方圖:
import matplotlib.pyplot as plt
import cv2

# 讀取圖像
image = cv2.imread('image.jpg')

# 将圖像轉換為灰階圖像
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# 計算直方圖
hist = cv2.calcHist([gray], [0], None, [256], [0, 256])

# 繪制直方圖
plt.plot(hist, color='black')
plt.xlabel('灰階級别')
plt.ylabel('像素數')
plt.title('灰階直方圖')
plt.show()
           
  1. 互動式标注:
import matplotlib.pyplot as plt

# 定義資料
x = [1, 2, 3, 4, 5]
y = [2, 4, 6, 8, 10]

# 建立圖像對象
fig, ax = plt.subplots()

# 繪制點和線
ax.plot(x, y, marker='o', linestyle='-', color='blue')

# 添加文本标注
for i, j in zip(x, y):
    ax.annotate(f'({i}, {j})', xy=(i, j), xytext=(i+0.1, j+0.5))

# 設定坐标軸标簽和标題
ax.set_xlabel('X軸')
ax.set_ylabel('Y軸')
ax.set_title('點和線示例')

plt.show()
           

這些示例可以幫助你開始使用matplotlib進行圖像繪制、點和線繪制、圖像輪廓和直方圖繪制,以及互動式标注。你可以根據自己的需求進行修改和擴充。

下面是一個使用Python進行計算機視覺程式設計的示例,包括使用NumPy庫進行圖像數組表示、灰階變換、圖像縮放、直方圖均衡化、圖像平均、主成分分析(PCA)以及使用pickle子產品儲存圖像。

首先,我們需要導入所需的庫和子產品:

import numpy as np
import cv2
from sklearn.decomposition import PCA
import pickle
           
  1. 圖像數組表示:
# 讀取圖像
image = cv2.imread('image.jpg')

# 将圖像轉換為NumPy數組
image_array = np.array(image)
           
  1. 灰階變換:
# 将彩色圖像轉換為灰階圖像
gray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
           
  1. 圖像縮放:
# 縮放圖像到指定尺寸
resized_image = cv2.resize(image, (new_width, new_height))
           
  1. 直方圖均衡化:
# 将灰階圖像進行直方圖均衡化
equalized_image = cv2.equalizeHist(gray_image)
           
  1. 圖像平均:
# 讀取多張圖像
image1 = cv2.imread('image1.jpg')
image2 = cv2.imread('image2.jpg')

# 計算圖像平均
average_image = np.mean([image1, image2], axis=0).astype(np.uint8)
           
  1. 圖像的主成分分析(PCA):
# 将圖像轉換為一維向量
flatten_image = image_array.flatten()

# 進行主成分分析
pca = PCA(n_components=2)
pca_result = pca.fit_transform(flatten_image)
           
  1. 使用pickle子產品儲存圖像:
# 儲存圖像到檔案
with open('image.pickle', 'wb') as f:
    pickle.dump(image, f)
           

請注意,以上隻是一些示例代碼,實際應用中可能需要根據具體需求進行适當的調整和擴充。

繼續閱讀