Q:

How to put texts in image via WordCloud in Jupyter Notebook

I have a problem about showing texts put in image via WordCloud in Jupyter Notebook.
Here is my image shown below.

The output of figure is based on the results of text in rectangle not showing in defined text in image.
Here is the output

How can I fix it?
Here is my code snippet defined below.
plt.figure(figsize=[15,15])

char_mask = np.array(Image.open("images/netflix.png"))
image_colors = ImageColorGenerator(char_mask)

wordcloud = WordCloud(stopwords=STOPWORDS,background_color = 'white', 
                      width = 1000,  
                      height = 1000, 
                      max_words =300,
                      mask=char_mask).generate(' '.join(netflix_df['title']))

wordcloud.recolor(color_func=image_colors)

plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off')
plt.title('Most Popular Words in Title',fontsize = 30)
plt.show()

A:

If you want to put result inside word NETFLIX then create black NETFLIX on white background. 
It is easier to do it in any photo editor (like GIMP or Photoshop)
(BTW: I added contour_width= and contour_color= to see if code found NETFLIX on image)
Image: 

Result:

Code:
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from PIL import Image, ImageOps
from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator

netflix_df = pd.DataFrame({'title': ['King Kong', 'Rambo', 'Rambo II', 'Rambo III', 'James Bond',]})
text = ' '.join(netflix_df['title']

char_mask = np.array(Image.open("netflix.png")) # black NETFLIX on white background

wordcloud = WordCloud(stopwords=STOPWORDS,
                        background_color='white', 
                        #width=1000,  
                        #height=1000, 
                        max_words=300,
                        mask=char_mask,
                        contour_width=3, 
                        contour_color='steelblue',
                    ).generate(text))

#image_colors = ImageColorGenerator(np.array(image))
#wordcloud.recolor(color_func=image_colors)

plt.figure(figsize=[15, 15])
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off')
plt.title('Most Popular Words in Title', fontsize=30)
plt.show()

Documentation: Masked wordcloud

With your original image (red NETFLIX on black bacground) you can try to convert to grayscale and invert it.
from PIL import Image, ImageOps

image = Image.open("netflix.jpg") # red NETFLIX on white background
image_gray = image.convert('L')
image_invert = ImageOps.invert(image_gray)
#image_invert.show() # it shows result
char_mask = np.array(image_invert)

#im = Image.fromarray(char_mask)
#im.show()

But original jpg image has many different values for red color and mask is not perfect.

It needs more work - ie. filter colors in ranges. 
char_mask[ char_mask < 200 ] = 0
char_mask[ char_mask > 200 ] = 255

Result:

Code:
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from PIL import Image, ImageOps
from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator

netflix_df = pd.DataFrame({'title': ['King Kong', 'Rambo', 'Rambo II', 'Rambo III', 'James Bond',]})
text = ' '.join(netflix_df['title']

image = Image.open("netflix.jpg") # red NETFLIX on black background
image_gray = image.convert('L')
image_invert = ImageOps.invert(image_gray)
#image_invert.show()
char_mask = np.array(image_invert)
char_mask[ char_mask < 200 ] = 0
char_mask[ char_mask > 200 ] = 255
#print(char_mask)

#im = Image.fromarray(char_mask)
#im.show()

wordcloud = WordCloud(stopwords=STOPWORDS,
                        background_color='white', 
                        #width=1000,  
                        #height=1000, 
                        max_words=300,
                        mask=char_mask,
                        contour_width=3, 
                        contour_color='steelblue',
                    ).generate(text))

image_colors = ImageColorGenerator(np.array(image))
wordcloud.recolor(color_func=image_colors)

plt.figure(figsize=[15,15])
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off')
plt.title('Most Popular Words in Title',fontsize = 30)
plt.show()

BTW: if you create white NETFLIX on black background

Then you can get 

Code:
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
from PIL import Image, ImageOps
from wordcloud import WordCloud, STOPWORDS, ImageColorGenerator

netflix_df = pd.DataFrame({'title': ['King Kong', 'Rambo', 'Rambo II', 'Rambo III', 'James Bond',]})
text = ' '.join(netflix_df['title']

image = Image.open("netflix.jpg") # red NETFLIX on black background
image_gray = image.convert('L')
#image_gray.show()
char_mask = np.array(image_gray)
char_mask[ char_mask < 50 ] = 0
char_mask[ char_mask > 50 ] = 255
print(char_mask)

#im = Image.fromarray(char_mask)
#im.show()

wordcloud = WordCloud(stopwords=STOPWORDS,
                        background_color='white', 
                        #width=1000,  
                        #height=1000, 
                        max_words=300,
                        mask=char_mask,
                        contour_width=3, 
                        contour_color='steelblue',
                    ).generate(text))

image_colors = ImageColorGenerator(np.array(image))
wordcloud.recolor(color_func=image_colors)

plt.figure(figsize=[15,15])
plt.imshow(wordcloud, interpolation='bilinear')
plt.axis('off')
plt.title('Most Popular Words in Title',fontsize = 30)
plt.show()

BTW: to invert gray scale image you can also use
char_mask = ~char_mask  # invert gray scale 

