Trang chủ / Tài nguyên
Tài nguyên
Cheat sheet NumPy cho xử lý ảnh và AI
Tạo mảng, cắt ROI, mặt nạ, đổi hình dạng, tính toán vector hóa: các thao tác NumPy dùng nhiều nhất.
Nội dung bài viết Tạo mảng Thông tin mảng Cắt, chọn và sửa Mặt nạ và điều kiện Đổi hình dạng và kiểu Tính toán vector hóa Lưu và đọc
Trang tra cứu nhanh các thao tác NumPy dùng nhiều nhất khi xử lý ảnh và dữ liệu cho AI. Ảnh OpenCV là mảng NumPy, nên thành thạo các lệnh dưới đây giúp bạn viết code ngắn gọn và nhanh hơn nhiều so với vòng lặp. Giả định đã có import numpy as np.
Tạo mảng
Việc cần làm Code
Ảnh đen 480×640 xám / màu np.zeros((480, 640), np.uint8) / np.zeros((480, 640, 3), np.uint8)
Ảnh trắng np.full((480, 640), 255, np.uint8)
Mảng giống kích thước ảnh khác np.zeros_like(img)
Dãy số np.arange(0, 10, 2), np.linspace(0, 1, 5)
Số ngẫu nhiên tái lập được rng = np.random.default_rng(0); rng.normal(0, 5, img.shape)
Thông tin mảng
Việc cần làm Code
Kích thước, số chiều, kiểu a.shape, a.ndim, a.dtype
Số phần tử, dung lượng a.size, a.nbytes
Thống kê a.min(), a.max(), a.mean(), a.std(), np.median(a)
Thống kê theo kênh màu img.mean(axis=(0, 1)) → 3 giá trị B, G, R
Phân vị np.percentile(a, [1, 99])
Cắt, chọn và sửa
Việc cần làm Code
Cắt ROI roi = img[y:y+h, x:x+w] (là view, dùng .copy() nếu cần độc lập)
Một kênh màu img[:, :, 2] (kênh R trong BGR)
Đảo BGR → RGB img[:, :, ::-1]
Lật ngang / dọc img[:, ::-1] / img[::-1]
Lấy mẫu thưa (giảm 2 lần) img[::2, ::2]
Gán theo mặt nạ img[mask > 0] = (0, 0, 255)
Mặt nạ và điều kiện
Việc cần làm Code
Mặt nạ điểm sáng mask = gray > 200
Kết hợp điều kiện (gray > 50) & (gray < 200), dùng | cho "hoặc", ~ cho "không"
Đếm / tỷ lệ mask.sum(), mask.mean()
Tọa độ các điểm thỏa mãn ys, xs = np.nonzero(mask)
Chọn giá trị theo điều kiện np.where(mask, 255, 0).astype(np.uint8)
Cắt về khoảng np.clip(a, 0, 255)
Đổi hình dạng và kiểu
Việc cần làm Code
Đổi kiểu tránh tràn số img.astype(np.int16), img.astype(np.float32) / 255
Làm phẳng a.ravel() (view nếu được), a.flatten() (luôn copy)
HWC → CHW (cho PyTorch) img.transpose(2, 0, 1)
Thêm chiều batch x[None] hoặc np.expand_dims(x, 0)
Ghép ảnh cạnh nhau np.hstack([a, b]), np.vstack([a, b])
Xếp chồng thành batch np.stack(list_anh)
Tính toán vector hóa
Việc cần làm Code
Khoảng cách giữa nhiều điểm và một điểm np.linalg.norm(pts - p0, axis=1)
Histogram 256 mức np.bincount(gray.ravel(), minlength=256)
Chỉ số giá trị lớn nhất np.argmax(a); trong ảnh 2D: np.unravel_index(np.argmax(a), a.shape)
Sắp xếp giảm dần np.argsort(-scores)
Fitting đường thẳng k, b = np.polyfit(xs, ys, 1)
Lưu và đọc
np.save("a.npy", a) / np.load("a.npy")
Nhiều mảng: np.savez("calib.npz", K=K, dist=dist)
Xem thêm bài giải thích chi tiết NumPy cho xử lý ảnh và cheat sheet OpenCV-Python .
HF
Ban biên tập HọcFree
Chúng tôi viết những bài hướng dẫn dễ hiểu, thực tế để ai cũng có thể tự học lập trình và ngoại ngữ, hoàn toàn miễn phí.