There may be better ways, but at least you can always make a flat grid and color it:
import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D import numpy as np
This creates:

(Please note that I was not very careful about the rotation matrix, you will need to create your own projection. It may actually be a good idea to use a real rotation matrix.)
Please note that there is a slight problem with fence poles and fences, i.e. the grid has one more vertex compared to the number of patches.
The above approach is not very effective if you have high resolution images. It may not even be useful with them. Then another option is to use a backend that supports affine image transformations. Unfortunately, you will have to calculate the conversions yourself. It's not terribly complicated, but still a little awkward, and then you won't get a real 3D image that could be rotated, etc.
For this approach, see http://matplotlib.org/examples/api/demo_affine_image.html
Alternatively, you can use OpenCV and its cv2.warpAffine function to warp the image before showing it with imshow . If you fill the environment with transparent color, you can then fold the images to get a result that looks like your iamge example.
To give you an idea of ββthe plot_surface capabilities, I tried to flip Lena around the half cylinder:
import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D import numpy as np
It bends really well, but all operations on the image are rather slow:

source share