OpenCV đã được khoảng từ năm 2001. Trong những ngày thư viện được xây dựng xung quanh một giao diện C và để lưu trữ hình ảnh
trong bộ nhớ của họ được sử dụng một cấu trúc được gọi là C IplImage. Đây là một trong những bạn sẽ thấy trong hầu hết các hướng dẫn cũ và
tài liệu giáo dục. Vấn đề ở đây là nó mang đến cho bảng tất cả các nhược điểm của ngôn ngữ C. Lớn nhất
vấn đề là quản lý bộ nhớ của nhãn hiệu. Nó được xây dựng dựa trên giả định rằng người sử dụng có trách nhiệm chăm sóc
cấp phát bộ nhớ và deallocation. Trong khi điều này không phải là một vấn đề với các chương trình nhỏ hơn, một khi cơ sở mã của bạn phát triển nó
sẽ được nhiều hơn một cuộc đấu tranh để xử lý tất cả điều này thay vì tập trung vào giải quyết các mục tiêu phát triển của mình.
May mắn C ++ đến xung quanh và giới thiệu các khái niệm về các lớp học làm cho dễ dàng hơn cho người sử dụng thông qua bộ nhớ tự động
quản lý (nhiều hơn hoặc ít hơn). Các tin tốt là C ++ là hoàn toàn tương thích với C, do đó không có vấn đề tương thích có thể phát sinh
từ việc thay đổi. Vì vậy, OpenCV 2.0 giới thiệu một C ++ giao diện mới này đã cung cấp một phương pháp mới để làm
những điều đó có nghĩa là bạn không cần phải fiddle với quản lý bộ nhớ, làm cho súc tích mã của bạn (ít hơn để viết, để
đạt được nhiều hơn). Nhược điểm chính của giao diện ++ C là nhiều hệ thống nhúng phát triển tại thời điểm
hỗ trợ chỉ C. Vì vậy, trừ khi bạn đang nhắm mục tiêu nền tảng nhúng, không có điểm để sử dụng các phương pháp cũ
(trừ khi bạn là một lập trình viên masochist và bạn đang yêu cầu cho các rắc rối).
Điều đầu tiên bạn cần biết về Mat là bạn không còn cần phải tự phân bổ bộ nhớ của nó và phát hành nó
ngay khi bạn không cần nó. Trong khi làm điều này vẫn còn là một khả năng, hầu hết các chức năng OpenCV sẽ phân bổ của
dữ liệu đầu ra tự động. Là một tiền thưởng tốt đẹp nếu bạn vượt qua trên một đối tượng Mat đã tồn tại, trong đó đã phân bổ
không gian cần thiết cho các ma trận, điều này sẽ được tái sử dụng. Nói cách khác, chúng ta sử dụng ở tất cả các lần chỉ bộ nhớ nhiều như chúng
tôi. Cần phải thực hiện các nhiệm vụ
Mat về cơ bản là một lớp học với hai phần dữ liệu: tiêu đề ma trận (có chứa các thông tin như kích thước của ma trận,
phương pháp được sử dụng để lưu trữ, mà địa chỉ là các ma trận được lưu trữ, và do đó trên) và một con trỏ đến các ma trận có chứa
đang được dịch, vui lòng đợi..
![](//viimg.ilovetranslation.com/pic/loading_3.gif?v=b9814dd30c1d7c59_8619)