2011-07-13 11 views
5

Mam podstawowy plik PNG z dwoma kolorami: zielonym i karmazynowym. To, co chcę zrobić, to wziąć wszystkie magenta pikseli i uczynić je przezroczystymi, aby móc scalić obraz z innym obrazem.Tworzenie całkowicie przezroczystego koloru w OpenCV

Przykład może być, jeśli mam plik obrazu dwuwymiarowego na magenta tle. Usunąłbym całą karmazyn w tle, aby była przezroczysta. Stamtąd po prostu wziąłem obraz postaci i dodałem go jako warstwę na innym obrazie, aby wyglądał jak postać umieszczona w środowisku.

Z góry dziękuję.

Odpowiedz

9

To kodu chciałbym użyć,

Najpierw załadować obraz:

IplImage *myImage; 
myImage = cvLoadImage("/path/of/your/image.jpg"); 

następnie użyć maski tak, aby wybrać kolor, należy zapoznać się z dokumentacją. W dalszej części chcę wybrać niebieski (nie zapominaj, że w obrazach OpenCV są w formacie BGR, dlatego 125,0,0 jest niebieski (odpowiada dolnej granicy) i 255127127 jest niebieski z pewną tolerancją i jest górna granica. wybrałem dolną i górną granicę z tolerancją do podjęcia wszelkich błękit obrazu, ale można wybrać co chcesz ...

cvInRangeS(image, 
      cvScalar(125.0, 0.0, 0.0), 
      cvScalar(255.0, 127.0, 127.0), 
      mask 
      ); 

teraz wybraliśmy maskę, niech odwrotny to (jak nie chcemy, aby zachować maskę, ale aby ją usunąć)

cvNot(mask, mask); 

i skopiuj obraz z maską,

IplImage *myImageWithTransparency; //You may need to initialize it before 
cvCopy(myImage,myImageWithTransparency,mask); 

Nadzieja może pomóc,

Proszę odnieść się do OpenCVDocumentation uzyskania dalszych informacji

Here it is

Julien,

+0

dzięki za pomoc :) – Seb

+0

Hej, wydaje zrobiłem pomyłka, to nie tylko cvCopy (myImage, myImageWithTransparency), ale cvCopy (myImage, myImageWithTransparency, maska) :). Edytowałem swój post, bądź ostrożny, jeśli go używasz ... – jmartel

Powiązane problemy