Our query images will come from a web search. Before we start implementing the search functionality, let's write some helper functions that let us fetch images through the Requests library and convert them into an OpenCV-compatible format. Because this functionality is highly reusable, we will put it in a module of static utility functions. Let's create a file called RequestsUtils.py and import OpenCV, NumPy, and Requests, as follows:
#!/usr/bin/env python
import numpy # Hint to PyInstaller
import cv2
import requests
import sys
As a global variable, let's store HEADERS, a dictionary of headers that we will use when making web requests. Some servers reject requests that appear to come from a bot. To improve the chance of our requests being accepted, let's set the 'User-Agent' header to a value that mimics a web browser, as...