Có chức năng OpenCV để vẽ hình ảnh trên hình ảnh khác không? Tôi có một hình ảnh lớn là loại Mat
. Và tôi có một hình ảnh nhỏ của Mat
loại (5x7
). Tôi muốn vẽ hình ảnh nhỏ này qua hình ảnh lớn tại coordinates
được chỉ định.OpenCV vẽ hình ảnh lên hình ảnh khác
Trả lời
Sử dụng Mat::rowRange()
và Mat::colRange()
để chỉ định khu vực bạn muốn vẽ ở đích Mat
. Mã số:
Mat src(5, 7, CV_8UC1, Scalar(1)); // 5x7
Mat dst(10, 10, CV_8UC1, Scalar(0)); // 10x10
src.copyTo(dst.rowRange(1, 6).colRange(3, 10));
Kết quả trong những điều sau đây:
trước copyTo()
:
dst:
(0 0 0 0 0 0 0 0 0 0)
(0 0 0 0 0 0 0 0 0 0)
(0 0 0 0 0 0 0 0 0 0)
(0 0 0 0 0 0 0 0 0 0)
(0 0 0 0 0 0 0 0 0 0)
(0 0 0 0 0 0 0 0 0 0)
(0 0 0 0 0 0 0 0 0 0)
(0 0 0 0 0 0 0 0 0 0)
(0 0 0 0 0 0 0 0 0 0)
(0 0 0 0 0 0 0 0 0 0)
sau copyTo()
:
dst:
(0 0 0 0 0 0 0 0 0 0)
(0 0 0 1 1 1 1 1 1 1)
(0 0 0 1 1 1 1 1 1 1)
(0 0 0 1 1 1 1 1 1 1)
(0 0 0 1 1 1 1 1 1 1)
(0 0 0 1 1 1 1 1 1 1)
(0 0 0 0 0 0 0 0 0 0)
(0 0 0 0 0 0 0 0 0 0)
(0 0 0 0 0 0 0 0 0 0)
(0 0 0 0 0 0 0 0 0 0)
'a.copyTo (big.colRange (51,55) .rowRange. (63,69))' for '5x7' –
Cảm ơn bạn rất nhiều! – vitaly
Perfect One liner !! – user2727765
Tạo một khu vực quan tâm trong hình ảnh lớn và sau đó sao chép hình ảnh nhỏ đến khu vực đó:
cv::Rect roi(cv::Point(originX, originY), cv::Size(width, height));
cv::Mat destinationROI = bigImage(roi);
smallImage.copyTo(destinationROI);
Nếu bạn chắc chắn hình ảnh nhỏ phù hợp với hình ảnh lớn sau đó bạn chỉ có thể làm:
cv::Rect roi(cv::Point(originX, originY), smallImage.size());
smallImage.copyTo(bigImage(roi));
Rất tiếc, điều này dường như không hoạt động đối với tôi, tôi nhận được lỗi: 'lỗi: không có hàm nào phù hợp để gọi‘ cv :: Mat :: copyTo (cv :: Mat) ’. Và nó cung cấp các ứng cử viên nhận cv :: OutputArray thay vào đó, khi tôi nhìn vào http://opencv.willowgarage.com/documentation/cpp/basic_structures.html#cv-mat-copyto nó dường như có Mat là một đối số, nhưng tôi nhận được lỗi này? – pbond
Dưới đây là giải pháp trong phiên bản java của OpenCV
Rect roi= new Rect(originX,originY,smalImage.width(),smallImge.height());
smallImage.copyTo(new Mat(input,roi));
- 1. opencv tìm hình ảnh ở trên hình ảnh khác
- 2. vẽ hình ảnh lên bitmap lớn hơn
- 3. Android - Vẽ lên đầu hình ảnh
- 4. Cách đặt hình ảnh lên hình khác?
- 5. Vẽ một hình ảnh khác trên UIImage
- 6. OpenCV tiểu hình ảnh từ một hình ảnh Mat
- 7. trừ một hình ảnh từ hình ảnh khác bằng cách sử dụng openCV
- 8. Cách vẽ hình vẽ trong hộp ảnh
- 9. Tham gia hình ảnh PNG lên hình ảnh động APNG
- 10. Khâu 2 hình ảnh trong opencv
- 11. So sánh hình ảnh OpenCV trong Android
- 12. Tải hình ảnh bằng OpenCV trong Android
- 13. Tải hình ảnh OpenCV cho OpenGL Texture
- 14. Làm cách nào để thêm hình ảnh lên đầu hình ảnh khác?
- 15. Làm cách nào để chồng hình ảnh SVG lên một hình ảnh khác bằng Apache Batik?
- 16. Làm cách nào để có thể phủ một hình ảnh lên hình ảnh khác?
- 17. Vẽ trên một hình ảnh bằng Raphael.js
- 18. html5 Tải lên hình ảnh
- 19. OpenCV cho hình ảnh ANDROID so sánh
- 20. Kích thước hình ảnh (Python, OpenCV)
- 21. Hiển thị hình ảnh thô Opencv Python
- 22. OpenCV cách ghi đè hình ảnh RGB
- 23. Cách tải hình ảnh lên canvas HTML5
- 24. CoreGraphics vẽ hình ảnh trên canvas trắng
- 25. vẽ đối tượng/hình ảnh trên canvas
- 26. Tìm hình ảnh bên trong một hình ảnh khác
- 27. Tạo hình ảnh với GD chứa các hình ảnh khác
- 28. Html Hình ảnh qua hình ảnh
- 29. Sao chép vùng của một hình ảnh sang vùng khác trong một hình ảnh khác
- 30. Tìm hình ảnh bị hỏng trong trang & hình ảnh thay thế bởi hình ảnh khác
Hãy chấp nhận một số câu trả lời hoặc cho biết lý do tại sao chúng không hoạt động. Cố gắng không để giữ cho nơi này mở câu hỏi nghĩa địa. –