1. Trang chủ
  2. Blog
  3. OpenCV Python: Xử Lý Ảnh Với Thư Viện Cv2 Cho Người Mới
Python

OpenCV Python: Xử Lý Ảnh Với Thư Viện Cv2 Cho Người Mới

U

Uyên Hoàng Thị Tố

Đăng ngày 12/11/2026

OpenCV Python là thư viện mã nguồn mở giúp bạn đọc, chỉnh sửa và phân tích ảnh, video bằng vài dòng code. Bài viết hướng dẫn cài đặt, dùng module python cv2 để đổi màu, cắt ảnh, phát hiện cạnh và đếm vật thể. Mỗi ví dụ ngắn gọn, đã chạy thử và dùng được ngay cho người mới bắt đầu.

OpenCV Python là gì?

OpenCV là viết tắt của Open Source Computer Vision Library, thư viện thị giác máy tính mã nguồn mở. Thư viện được viết chủ yếu bằng C++ nên chạy nhanh. Python gọi tới phần lõi này qua một lớp kết nối.

Khi nói OpenCV Python, chúng tôi muốn nói tới bộ thư viện OpenCV dùng trong code Python. Bạn cài gói opencv-python, còn trong code bạn nhập module tên cv2.

Python cv2 dùng để làm gì?

Module python cv2 có mặt trong nhiều bài toán xử lý ảnh thực tế:

  • Chỉnh sửa ảnh: đổi kích thước, cắt, xoay, chuyển sang ảnh xám.

  • Lọc và làm nét: làm mờ để giảm nhiễu, tăng tương phản.

  • Phát hiện đặc trưng: tìm cạnh, tìm đường viền, đếm vật thể.

  • Xử lý video: đọc từng khung hình từ file hoặc webcam.

  • Chuẩn bị dữ liệu cho AI: đưa ảnh về cùng kích thước, cùng hệ màu trước khi huấn luyện mô hình.

Với học sinh muốn học sâu về AI, OpenCV là bước đầu để hiểu máy tính "nhìn" ảnh ra sao.

Cách cài đặt OpenCV Python

Bạn cài thư viện bằng pip, trình quản lý gói đi kèm Python.

Bước 1: Mở Terminal (macOS, Linux) hoặc Command Prompt (Windows).

Bước 2: Gõ lệnh cài đặt:

pip install opencv-python

Bước 3: Kiểm tra cài đặt thành công:

import cv2
print(cv2.__version__)

Nếu màn hình in ra số phiên bản, bạn đã sẵn sàng. NumPy được cài kèm tự động vì OpenCV lưu ảnh dưới dạng mảng NumPy.

Chọn đúng gói python opencv

Trên PyPI có nhiều gói python opencv với tên gần giống nhau. Bạn chỉ nên cài một gói:

GóiCó gìKhi nào dùng
opencv-pythonCác module chính, có cửa sổ hiển thị ảnhHọc trên máy tính cá nhân
opencv-contrib-pythonModule chính và module mở rộngCần thuật toán nâng cao
opencv-python-headlessKhông có giao diện cửa sổChạy trên máy chủ, Docker

Cài nhiều gói cùng lúc dễ gây xung đột, khiến import cv2 báo lỗi.Cài đặt OpenCV Python bằng pip - codegym.vn

Đọc, hiển thị và lưu ảnh với OpenCV Python

Ba hàm đầu tiên bạn cần biết là imread(), imshow() và imwrite().

import cv2

anh = cv2.imread("meo.jpg")       # đọc ảnh
if anh is None:
    print("Không tìm thấy file ảnh")
else:
    print(anh.shape)              # (cao, rộng, số kênh màu)
    cv2.imshow("Ảnh gốc", anh)    # mở cửa sổ hiển thị
    cv2.waitKey(0)                # chờ bạn bấm một phím
    cv2.destroyAllWindows()
    cv2.imwrite("meo-ban-sao.jpg", anh)   # lưu ảnh

Một điểm người mới hay bỏ qua: imread() không báo lỗi khi sai đường dẫn. Hàm chỉ trả về None. Vì vậy bạn nên kiểm tra bằng if như ví dụ trên.

Ảnh trong python cv2 là mảng NumPy

Mỗi ảnh màu là một mảng ba chiều: chiều cao, chiều rộng và 3 kênh màu. Mỗi điểm ảnh (pixel) có giá trị từ 0 đến 255.

print(type(anh))     # <class 'numpy.ndarray'>
print(anh[100, 100]) # màu của pixel ở hàng 100, cột 100

Lưu ý quan trọng: OpenCV lưu màu theo thứ tự BGR, không phải RGB. Nếu bạn hiển thị ảnh bằng Matplotlib mà thấy màu bị đảo, hãy chuyển hệ màu trước.

Các thao tác xử lý ảnh cơ bản với OpenCV Python

Phần này gom những hàm bạn dùng nhiều nhất khi làm việc với OpenCV Python.

Chuyển ảnh xám và đổi hệ màu

xam = cv2.cvtColor(anh, cv2.COLOR_BGR2GRAY)   # ảnh xám, 1 kênh
rgb = cv2.cvtColor(anh, cv2.COLOR_BGR2RGB)    # đổi sang RGB

Ảnh xám chỉ còn một kênh nên xử lý nhanh hơn. Đa số thuật toán tìm cạnh, tìm đường viền đều nhận ảnh xám.

Đổi kích thước và cắt ảnh

nho = cv2.resize(anh, (200, 150))   # (rộng, cao)
vung = anh[50:200, 50:200]          # [hàng, cột]

Hàm resize() nhận kích thước theo thứ tự (rộng, cao). Khi cắt bằng chỉ số, bạn viết theo thứ tự [hàng, cột], tức là cao trước, rộng sau. Cách cắt này giống cắt list, bạn xem thêm ở bài Python List.

Làm mờ và phát hiện cạnh trong python cv2

mo = cv2.GaussianBlur(anh, (5, 5), 0)   # làm mờ, giảm nhiễu
canh = cv2.Canny(xam, 100, 200)         # tìm cạnh

Hàm Canny() trả về ảnh đen trắng, trong đó đường trắng là cạnh của vật thể. Hai số 100 và 200 là ngưỡng dưới và ngưỡng trên. Bạn thử tăng giảm để thấy số cạnh thay đổi.

Bảng dưới đây giúp bạn tra nhanh các hàm python cv2 trong bài:Các hàm python cv2 xử lý ảnh hay dùng trong OpenCV Python - codegym.vn

HàmCông dụng
cv2.imread()Đọc ảnh từ file
cv2.imwrite()Lưu ảnh ra file
cv2.cvtColor()Đổi hệ màu (xám, RGB, HSV)
cv2.resize()Đổi kích thước ảnh
cv2.GaussianBlur()Làm mờ, giảm nhiễu
cv2.Canny()Phát hiện cạnh
cv2.threshold()Chuyển ảnh xám thành ảnh nhị phân
cv2.findContours()Tìm đường viền vật thể

Ví dụ OpenCV Python: đếm vật thể trong ảnh

Bài toán: một ảnh nền trắng có vài hình khối màu. Bạn cần đếm có bao nhiêu hình và vẽ khung quanh từng hình.

import cv2

anh = cv2.imread("hinh-khoi.jpg")
xam = cv2.cvtColor(anh, cv2.COLOR_BGR2GRAY)

# Vật thể tối hơn nền trắng: đảo ngưỡng để vật thể thành màu trắng
_, nhi_phan = cv2.threshold(xam, 200, 255, cv2.THRESH_BINARY_INV)

duong_vien, _ = cv2.findContours(
    nhi_phan, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE
)
print("Số vật thể:", len(duong_vien))

for dv in duong_vien:
    x, y, w, h = cv2.boundingRect(dv)
    cv2.rectangle(anh, (x, y), (x + w, y + h), (0, 255, 0), 2)

cv2.imwrite("ket-qua.jpg", anh)

Chương trình đi qua 4 bước:

  1. Chuyển ảnh xám để chỉ còn độ sáng.

  2. Phân ngưỡng để tách vật thể khỏi nền.

  3. Tìm đường viền ngoài cùng của từng vật thể.

  4. Vẽ khung chữ nhật quanh mỗi đường viền rồi lưu ảnh.

Từ OpenCV 4, findContours() trả về 2 giá trị. Nếu bạn đọc code cũ viết cho OpenCV 3 thấy 3 giá trị, đó là khác biệt phiên bản. Vòng lặp duyệt từng đường viền dùng cú pháp for quen thuộc của Python.Đếm vật thể trong ảnh với python opencv - codegym.vn

Đọc video từ webcam với python opencv

Video là chuỗi ảnh liên tiếp. Bạn đọc từng khung hình bằng VideoCapture và xử lý như ảnh thường.

cam = cv2.VideoCapture(0)   # 0 là webcam mặc định
while True:
    ok, khung = cam.read()
    if not ok:
        break
    cv2.imshow("Webcam", cv2.cvtColor(khung, cv2.COLOR_BGR2GRAY))
    if cv2.waitKey(1) & 0xFF == ord("q"):   # bấm q để thoát
        break
cam.release()
cv2.destroyAllWindows()

Lỗi thường gặp khi dùng OpenCV Python

  • ModuleNotFoundError: No module named 'cv2': chưa cài thư viện hoặc cài vào bản Python khác. Thử python -m pip install opencv-python.

  • Ảnh đọc ra None: sai đường dẫn, sai tên file hoặc đường dẫn có ký tự đặc biệt. Kiểm tra lại thư mục đang chạy code.

  • Màu ảnh bị đảo khi vẽ bằng Matplotlib: quên chuyển từ BGR sang RGB.

  • imshow() báo lỗi trên máy chủ hoặc Colab: môi trường không có màn hình. Lưu ảnh bằng imwrite() rồi mở file để xem.

  • Nhầm thứ tự kích thước: resize() dùng (rộng, cao), còn anh.shape trả về (cao, rộng, kênh).

Câu hỏi thường gặp về OpenCV Python

Vì sao cài opencv-python nhưng lại import cv2?

Tên gói trên PyPI và tên module trong code là hai thứ khác nhau. Gói tên opencv-python, còn module bên trong được đặt tên cv2. Đây là quy ước của thư viện từ lâu.

Học OpenCV Python cần biết gì trước?

Bạn cần nắm Python cơ bản: biến, kiểu dữ liệu, vòng lặp, hàm. Biết thêm NumPy sẽ giúp bạn hiểu ảnh là mảng số. Cách viết hàm để tái sử dụng code xử lý ảnh có ở bài Python def.

OpenCV có dùng được cho AI và Machine Learning không?

Có. OpenCV thường lo phần đọc và tiền xử lý ảnh, sau đó dữ liệu được đưa vào mô hình học máy. Hai công cụ này hay đi cùng nhau trong dự án nhận diện hình ảnh.

Bắt đầu thực hành OpenCV Python

Bạn đã biết cách cài đặt, đọc và lưu ảnh, đổi màu, cắt, làm mờ, tìm cạnh và đếm vật thể. Hãy chụp một tấm ảnh trên bàn học rồi chạy lại từng ví dụ để thấy kết quả thật.

Đăng ký tài khoản miễn phí để học Python có hướng dẫn từng bước. Bạn nắm chắc nền tảng với khóa Nhập môn Lập trình Python. Sau đó, bạn đi tiếp với khóa Machine Learning cơ bản với Python Scikit-learn hoặc Lập trình Trí tuệ nhân tạo với Python. Gọi +84 989 534 458 để chúng tôi tư vấn lộ trình học AI, bắt đầu từ opencv python.

Chia sẻ:
Đã sao chép!

Bài viết liên quan

HỌC PYTHON - CÔNG TY CP CODEGYM VIỆT NAM

MST: 0108104526
Địa chỉ: Căn hộ TT01.23, dự án Hải Đăng city, phường Từ Liêm, thành phố Hà Nội
Điện thoại: +84 989 534 458
Website: codegym.vn