Tworzyliśmy niestandardową kamerę Android Activity, w której prostokąt jest nałożony wewnątrz podglądu kamery, a po zrobieniu zdjęcia (przy naciśnięciu przycisku ), chcemy przyciąć odpowiadający obszar prostokąta końcowego obrazu. Problem w tym, że jeszcze nie zorientowaliśmy się, jak Android mapuje ekran podglądu na ostateczny obraz.Mapowanie podglądu obrazu z aparatu na Androida do końcowego obrazu
Próbowaliśmy następującą formułę, ale działa tylko w niektórych przypadkach:
Niech X i Y będą współrzędne lewego górnego rogu prostokąta jako pokazanego na podglądzie kamery.
Niech preview_width i preview_height będą szerokością i wysokością kamery podgląd. Są to get za pomocą funkcji getBestPreviewSize(), która pętli za pośrednictwem obsługiwanych rozmiarów podglądu i wybiera większy. Załóżmy, że są to 1280 i 720.
Niech szerokość_obrazu i wysokość_obrazu będą stanowić szerokość i wysokość końcowego obrazu , obsługiwanego przez aparat. Dla naszych celów przyjmijmy, że jest to 1632 * 1224 (na Sony Ericsson XPERIA odpowiada to 2 MP).
Chcemy znaleźć x_map, y_map, które są X i Y z przyciętego prostokąta z ostatecznego obrazu.
Następnie przez reguły analogicznie wzór był używany był:
x_map = picture_width * X/preview_width; y_map = picture_height * y/preview_height;
Jednak nie wydaje się to działać we wszystkich przypadkach. Okazało się, że gdy wymiary ekranu telefonu są zbliżone do rozmiaru podglądu, ta formuła prawie działa (w przybliżeniu z małym błędem).
Jednak w innych przypadkach, takich jak telefon Sony XPERIA, gdzie wymiary ekranu wynoszą: szerokość: 480 i wysokość: 854, formuła kończy się niepowodzeniem.
Na przykład, dla x = 50, a następnie x_map = 1632 * 50/1280 = 63,75 Jednakże ta liczba, jak pokazano przez prostokątny obszar obcięcia końcowego obraz, tak naprawdę nie odpowiadają prostokątem obszar podglądu. To jest daleko. Nasza formuła nie uwzględnia wymiarów ekranu, , chociaż eksperymentowanie z modyfikowaniem go w celu uwzględnienia ich, nie spowodowało żadnych pożądanych rezultatów.
Podejrzewamy, że odwzorowanie pomiędzy wielkością podglądu i ostatecznego obrazu jakoś uwzględnia wymiarów ekranu, ale nie zorientowali się, jak dokładnie, ponieważ nie ma na nim dokumentacja i po intensywnie szukając odpowiedzi na w sieci nic istotnego nie wyszło. Uważamy, że istnieje pewien współczynnik skali i współczynnik proporcji, który musimy wziąć pod uwagę przed zastosowaniem reguły analogii, aby formuła działała poprawnie.
Czy znasz poprawną formułę dla powyższego?