Code
import numpy as np from skimage import transform, morphology, io, filters import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import Axes3D from matplotlib.animation import FuncAnimation def getContour(image, target_size, verbose=True): image=transform.resize(image, target_size) otsu=filters.threshold_otsu(image) binimg=np.where(image>otsu,1,0) line=binimg-morphology.erosion(binimg) return line def update(ii, angles): ax1.view_init(0, angles[ii]) plt.draw() #-------------Main--------------------------------- if __name__=='__main__': image=io.imread('./cflag.png',as_gray=True) image=transform.resize(image, (300, 300)) image=image[::-1, :] image=image/255. line1=getContour(image, image.shape) image2=io.imread('./twitter.png',as_gray=True) image2=transform.resize(image2, (300, 300)) image2=image2[::-1, :] image2=image2/255. line2=getContour(image2, image.shape) # form cube nz, nx=line1.shape ny=nx line1b=np.reshape(line1, (nz, 1, nx)) facexz=np.repeat(line1b, ny, axis=1) line2b=np.reshape(line2, (nz, ny, 1)) faceyz=np.repeat(line2b, nx, axis=2) overlap=facexz*faceyz figure=plt.figure(figsize=(12,10),dpi=100) ax1=figure.add_subplot(111, projection='3d') points=np.where(overlap==1) ax1.scatter(points[2], points[1], points[0], color='r') plt.axis('off') # rotate the axes and update angles=np.arange(0,360,1)[::-1] angles=np.repeat(angles, 4, axis=0) anim=FuncAnimation(figure,update,frames=len(angles),fargs=(angles,), interval=8, repeat=False, blit=False) anim.save('fun_anim.mp4', fps=100)
Images
Download input images here:
looooooooove you sooooooooo much
I apologise, but, in my opinion, you are not right. I am assured. I suggest it to discuss.