Cách nhanh nhất để nhận được số lượng điểm ảnh màu trắng trong một hình ảnh nhị phân bằng cách sử dụng OpenCV là gì? Có điều gì đó nhanh hơn việc sử dụng hai vòng lặp và truy cập pixel hình ảnh theo pixel không?Cách nhanh nhất để nhận được số lượng điểm ảnh màu trắng trong một hình ảnh nhị phân bằng cách sử dụng OpenCV
Trả lời
Cách cô đọng nhất để thực hiện điều này là:
cv::Mat image, mask; //image is CV_8UC1
cv::inRange(image, 255, 255, mask);
int count = cv::countNonZero(mask);
Nếu bạn đang hoạt động trên một hình ảnh nhị phân, sau đó cuộc gọi đến cv::inRange()
là không cần thiết, và chỉ đơn giản là cv::countNonZero()
sẽ đủ.
Mặc dù bất kỳ phương pháp nào phải lặp qua tất cả các pixel, điều này có thể khai thác được tích hợp sẵn OpenCV parallel_for_()
, cho phép thực thi song song.
Nếu hình ảnh của bạn liên tục, bạn có thể lặp qua tất cả dữ liệu bằng một vòng lặp đơn.
Cảm ơn, cv :: inRange là điều tôi muốn! Tôi đang thực sự sử dụng OpenCV thông qua wrapper EmguCV (trong C#), và một dòng này tăng tốc chương trình của tôi cho khoảng 40%. Bạn có bất kỳ ý tưởng tại sao looping trong hai cho vòng lặp là chậm hơn rất nhiều? – xx77aBs
Tôi không phải rất quen thuộc với C#, nhưng tôi tin rằng nó không kiểm tra giới hạn khi bạn lặp lại trong một vòng lặp, có thể giải thích một số sự khác biệt hiệu suất. – Aurelius
Cảm ơn, kiểm tra giới hạn thực sự làm chậm mọi thứ. Nhưng sự kiện sau khi tôi đã vô hiệu hóa kiểm tra giới hạn, cho một hình ảnh rất lớn (10240x7680) CV chức năng mất khoảng 70ms, và hai cho vòng mất khoảng 350ms. Sau khi sử dụng Parallel.For, hai phương pháp tiếp cận vòng lặp mất khoảng 200ms, nhưng vẫn còn lâu hơn nhiều so với thực thi OpenCV. – xx77aBs
- 1. cụm Phát hiện các điểm ảnh màu trắng trong một hình ảnh sử dụng OpenCV
- 2. Đếm các điểm ảnh 'trắng' trong hình ảnh nhị phân opencv (hiệu quả)
- 3. Làm cách nào để đếm số lượng pixel trắng trong hình ảnh nhị phân bằng MATLAB?
- 4. OpenCV - Giao điểm giữa hai hình ảnh nhị phân
- 5. cách loại bỏ nhiễu hình ảnh nhị phân trong opencv?
- 6. loại bỏ nhiễu trong một hình ảnh nhị phân bằng cách sử dụng openCV
- 7. OpenCV cách tìm danh sách các thành phần được kết nối trong hình ảnh nhị phân
- 8. OpenCV - tìm hộp giới hạn của các đốm màu lớn nhất trong hình ảnh nhị phân
- 9. Python OpenCV - Tìm các khu vực màu đen trong một hình ảnh nhị phân
- 10. Cách dễ nhất để xoay 90 độ một hình ảnh bằng cách sử dụng OpenCV?
- 11. Có thể có hình ảnh đen trắng và màu trên cùng một cửa sổ bằng cách sử dụng opencv không?
- 12. Cách nhanh hơn để lặp qua từng điểm ảnh của một hình ảnh bằng Python?
- 13. trừ một hình ảnh từ hình ảnh khác bằng cách sử dụng openCV
- 14. Làm cách nào để cân bằng độ tương phản và độ sáng của hình ảnh bằng cách sử dụng opencv?
- 15. iOS Performance Tuning: cách nhanh nhất để có được màu pixel camera cho hình ảnh lớn
- 16. Xóa các đốm màu khỏi hình ảnh nhị phân
- 17. Định hướng hình ảnh nhị phân
- 18. Làm thế nào để cắt một hình ảnh trong OpenCV bằng cách sử dụng Python
- 19. Cắt ảnh trong android bằng cách sử dụng opencv
- 20. Tải hình ảnh bằng OpenCV trong Android
- 21. Cách sử dụng hình ảnh làm điểm trong ggplot?
- 22. NSStatusItem và hình ảnh được đánh dấu màu trắng
- 23. Phát hiện vùng sáng hình chữ nhật trong Hình ảnh bằng cách sử dụng OpenCv
- 24. OpenCV - Áp dụng mặt nạ cho hình ảnh màu
- 25. Sử dụng python PIL để biến hình ảnh RGB thành hình ảnh đen trắng tinh khiết
- 26. Nhận dữ liệu hình ảnh nhị phân từ kiểu đầu vào "tệp" sử dụng JavaScript/jQuery để sử dụng với xem trước hình ảnh với AJAX trong WebMatrix
- 27. Cách phát hiện Điểm phát sóng trong một hình ảnh
- 28. Lặp qua các điểm ảnh trong một hình ảnh
- 29. Chuyển đổi hình ảnh thang độ xám thành đen trắng bằng cách sử dụng Aforge.Net
- 30. Đèn flash màn hình trắng sau khi khởi chạy hình ảnh bằng cách sử dụng Phonegap
Hình ảnh có phải là hình thang màu xám đúng không, hoặc là hình ảnh nhị phân? – Aurelius
@Aurelius: Đó thực sự là hình ảnh nhị phân, tôi nên viết rằng trong câu hỏi. – xx77aBs