Czy istnieje funkcja OpenCV do narysowania obrazu na innym obrazie? Mam jedno duże zdjęcie typu Mat
. Mam mały obrazek o typie Mat
(5x7
). Chcę narysować ten mały obraz na dużym obrazie pod określonym numerem coordinates
.OpenCV narysować obrazek na innym obrazku
Odpowiedz
Użyj Mat::rowRange()
i Mat::colRange()
, aby określić obszar, na który chcesz narysować w miejscu docelowym Mat
. Kod:
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));
wyników w następujących przypadkach:
przed 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)
po 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))' dla '5x7' –
Dziękuję bardzo! – vitaly
Perfect One liner !! – user2727765
Tworzenie obszarze zainteresowania w dużym obrazie, a następnie skopiować mały obraz do tego regionu:
cv::Rect roi(cv::Point(originX, originY), cv::Size(width, height));
cv::Mat destinationROI = bigImage(roi);
smallImage.copyTo(destinationROI);
Jeżeli jesteś pewien mały obraz pasuje do wielkiego obrazu, a następnie można po prostu zrobić:
cv::Rect roi(cv::Point(originX, originY), smallImage.size());
smallImage.copyTo(bigImage(roi));
To niestety nie działa dla mnie, pojawia się błąd: 'error: no matching function dla wywołania 'cv :: Mat :: copyTo (cv :: Mat)'. I oferuje kandydatów otrzymujących cv :: OutputArray zamiast tego, kiedy patrzę na http://opencv.willowgarage.com/documentation/cpp/basic_structures.html#cv-mat-copyto, wydaje się, że bierze Mat jako argument, ale ja dostać ten błąd? – pbond
Oto rozwiązanie w wersji java OpenCV
Rect roi= new Rect(originX,originY,smalImage.width(),smallImge.height());
smallImage.copyTo(new Mat(input,roi));
- 1. Jak narysować tekst na obrazku?
- 2. Etykietka narzędzia na obrazku
- 3. opencv znajdowanie obrazu kordinates na innym obrazie
- 4. Wykrywanie kropel koloru na obrazku
- 5. C# rysowanie prostokąta na obrazku?
- 6. Znajdź obraz w obrazku
- 7. Znajdowanie podobrazów na obrazku
- 8. JTransforms FFT na obrazku
- 9. Identyfikowanie wzoru na obrazku
- 10. jquery.width return 0 na obrazek
- 11. Znajdź najczęstszy kolor na obrazku
- 12. Nakładanie zdjęć na jednym obrazku
- 13. Pływający znak Div na obrazku
- 14. Znajdź dominujący kolor na obrazku
- 15. Orientacja znanego obiektu na obrazku
- 16. Jak wyświetlić tekst na obrazku?
- 17. TensorFlow - rozpoznawanie tekstu na obrazku
- 18. Łączenie zachodzących na siebie grup na obrazku
- 19. Jak narysować wybrany element pola listy w innym kolorze?
- 20. Jak narysować tekst z innym obrysem i wypełnić kolory?
- 21. Jak narysować pogrubiony tekst na bitmapie?
- 22. Nakładanie tekstu i kolorów tła na obrazku
- 23. Obliczanie średniego koloru obszaru na obrazku.
- 24. Kursor WPF na częściowo przezroczystym obrazku
- 25. XAML jak wyświetlać tekst na obrazku
- 26. Jak wygenerować cień pod słowami na obrazku
- 27. Obrazek odświeżania siły PHP
- 28. Najprostszy sposób na "narysowanie" prostych linii na obrazku za pomocą jQuery i zapisanie w Rails DB?
- 29. Większy obraz do zdjęcia w obrazku
- 30. Zamień konkretny kolor na inny w obrazku/spriterze
Proszę przyjąć niektóre odpowiedzi lub powiedz, dlaczego nie działają. Staraj się nie pozostawiać tego miejsca otwartego na cmentarz. –