Hướng dẫn roi python opencv - roi python opencv

Facebook

Email hoặc số điện thoại di động mật khẩu mở khóa

Quên tài khoản?

Đăng ký

Không thể xử lý yêu cầu của bạn

Yêu cầu này gặp phải một vấn đề. Chúng tôi sẽ sửa chữa nó càng sớm càng tốt.

  • Trả lại trang trại

  • Trung Quốc (đơn giản hóa)
  • Tiếng Anh (Hoa Kỳ)
  • tiếng Nhật
  • Ảm đạm
  • Français (Pháp)
  • Bahasa Indesia
  • Polski
  • Español
  • Bồ Đào Nha BS (Brasil)
  • Deutsch
  • Ý

  • Đăng ký
  • Không thể xử lý yêu cầu của bạn
  • Yêu cầu này gặp phải một vấn đề. Chúng tôi sẽ sửa chữa nó càng sớm càng tốt.
  • Trả lại trang trại
  • Trung Quốc (đơn giản hóa)
  • Tiếng Anh (Hoa Kỳ)
  • tiếng Nhật
  • Ảm đạm
  • Français (Pháp)
  • Bahasa Indesia
  • Polski
  • Español
  • Bồ Đào Nha BS (Brasil)
  • Deutsch
  • Ý
  • Đăng nhập
  • Tin nhắn
  • Facebook Lite
  • Đồng hồ
  • Nơi
  • trò chơi
  • Thương trường
  • Meta Pay
  • Oculus
  • Cổng thông tin
  • Instagram
  • Bản tin
  • địa phương
  • Hoạt động gây quỹ
  • Phục vụ
  • Trung tâm thông tin cử tri

tập đoàn

Xử lý ảnh thường người ta chỉ xử lý 1 phần của ảnh chứ ít khi xử lý toàn bộ. Nhận diện khuôn mặt thì chỉ lấy vùng chứa khuôn mặt, xử lý biển số người ta crop biển số. Và vùng cần lấy ra đó là ROI – region of interest.

C++ có con trỏ rất hay, nó quản lý bộ nhớ RAM hiệu quả, làm giảm việc cấp phát và thu hồi bộ nhớ. Do đó sử dụng con trỏ sẽ giúp chương trình xử lý nhanh hơn. Nếu bạn hiểu con trỏ thì xử lý một phần hình ảnh bằng ROI cũng tương tự mà thôi


Trong bài này sử dụng ảnh bên dưới để làm ví dụ

Hướng dẫn roi python opencv - roi python opencv

Trong opencv, ảnh là ma trận, và ROI cũng là ma trận được quản lý bởi con trỏ. Code dưới đây tạo ROI là hình vuông size 100 ở vị trí (0; 0)

cv::Mat mat=cv::imread("image.jpg");::Mat mat=cv::imread("image.jpg");

cv::Rect roi=cv::Rect(0,0,100,100);::Rect roi=cv::Rect(0, 0,100,100);

cv::Mat matRoi=mat(roi);::Mat matRoi=mat(roi);

Gán giá trị 0 cho ROI thì ảnh gốc như sau

matRoi=0;=0;

cv::imshow("mat",mat);::imshow("mat",mat);

Ta thấy được vùng được chọn đã thành màu đen (giá trị 0)

Hướng dẫn roi python opencv - roi python opencv

Tương tự như vậy, gán 1 màu nào đó cho roi

matRoi=cv::Scalar(146,223,123);=cv::Scalar(146,223,123);

cv::imshow("mat",mat);::imshow("mat",mat);

Hướng dẫn roi python opencv - roi python opencv

Hoặc gán bằng 1 vùng ảnh khác, code bên dưới gán bằng hình vuông size 100 tại vị trí (200,200). Lưu ý không gán trực tiếp được mà phải xài hàm copyTo()copyTo()

cv::Mat matRoi2=mat(cv::Rect(200,200,100,100));::Mat matRoi2=mat(cv::Rect(200,200,100,100));

matRoi2.copyTo(matRoi);.copyTo(matRoi);

cv::imshow("mat",mat);::imshow("mat",mat);

Hướng dẫn roi python opencv - roi python opencv

Kết luận

Dùng ROI cũng giống như crop ảnh, tuy nhiên khác ở chỗ dùng ROI quản lý bộ nhớ tốt hơn. Không phải tạo vùng nhớ mới chứa ảnh đã crop nên tốc độ xử lý sẽ nhanh hơn crop ảnh. Đồng thời cũng dễ xử lý với những yêu cầu như blend ảnh hoặc các tính toán phức tạp khác.