|
import numpy as np |
|
import subprocess |
|
import cv2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PIC_DIR = 'uc_spk_Landscape2Soundscape_Masterpieces_pics/' |
|
|
|
DESCRIPTIONS = [ |
|
|
|
[ |
|
'01_Schick_AII840_001.jpg', |
|
'01_Schick_AII840_001.txt', |
|
'Statue in shire hill on autumn beach.', |
|
'Gottlieb Schick - Bildnis der Heinrike Dannecker - 1802', |
|
'en_US/m-ailabs_low#mary_ann', |
|
], |
|
|
|
[ |
|
'02_Constable_AI555_001.jpg', |
|
'02_Constable_AI555_001.txt', |
|
'Meadows country farm village in sight', |
|
'John Constable - Dorf an dem Flusse Stour - 1804', |
|
'en_US/m-ailabs_low#mary_ann', |
|
], |
|
|
|
[ |
|
'03_Schinkel_WS200-002.jpg', |
|
'03_Schinkel_WS200-002.txt', |
|
'Arriving at the shore on horses', |
|
'Karl Friedrich Schinkel - Gotische Kirche auf einem Felsen am Meer - 1815', |
|
'en_US/m-ailabs_low#mary_ann', |
|
], |
|
|
|
[ |
|
'04_Friedrich_FV317_001.jpg', |
|
'04_Friedrich_FV317_001.txt', |
|
'Land steppes', |
|
'Friedrich Caspar David - Der Watzmann - 1824/1825', |
|
'en_US/m-ailabs_low#mary_ann', |
|
], |
|
|
|
[ |
|
'05_Blechen_FV40_001.jpg', |
|
'05_Blechen_FV40_001.txt', |
|
'fjords', |
|
'Blechen - Carl Unwetter in der römischen Campagna - 1829', |
|
'en_US/m-ailabs_low#mary_ann', |
|
], |
|
|
|
[ |
|
'06_Menzel_AI900_001.jpg', |
|
'06_Menzel_AI900_001.txt', |
|
'Olive trees in Seville', |
|
'Adolph Menzel - Bauplatz mit Weiden - 1846', |
|
'en_US/m-ailabs_low#mary_ann', |
|
], |
|
|
|
[ |
|
'07_Courbet_AI967_001.jpg', |
|
'07_Courbet_AI967_001.txt', |
|
'Storm at the strand of waves Tsunami', |
|
'Gustave Courbet - Die Welle - 1869/1870', |
|
'en_US/m-ailabs_low#mary_ann', |
|
], |
|
|
|
[ |
|
'08_Monet_AI1013_001.jpg', |
|
'08_Monet_AI1013_001.txt', |
|
'Mai flowers blossom picnic', |
|
'Claude Monet - Sommertag - 1874', |
|
'en_US/m-ailabs_low#mary_ann', |
|
], |
|
|
|
[ |
|
'09_Blechen_AII823_001.jpg', |
|
'09_Blechen_AII823_001.txt', |
|
'Cascade in Africa', |
|
'Carl Blechen - Wasserfälle bei Tivoli - 1832', |
|
'en_US/m-ailabs_low#mary_ann', |
|
], |
|
|
|
[ |
|
'10_Boecklin_967648_NG2-80_001_rsz.jpg', |
|
'10_Boecklin_967648_NG2-80_001.txt', |
|
'Hades ades at it sisland', |
|
'Arnold Böcklin - Toteninsel - 1883', |
|
'en_US/m-ailabs_low#mary_ann', |
|
], |
|
|
|
[ |
|
'11_Liebermann_NG4-94_001.jpg', |
|
'11_Liebermann_NG4-94_001.txt', |
|
'Tavern at the waterfront', |
|
'Max Tiebermann - Gartenlokal an der Havel. Nikolskoe - 1916', |
|
'en_US/m-ailabs_low#mary_ann', |
|
], |
|
|
|
[ |
|
'12_Slevogt_AII1022_001.jpg', |
|
'12_Slevogt_AII1022_001.txt', |
|
'toy sailing yachts pool', |
|
'Max Slevogt - Segelboote auf der Alster am Abend -1905', |
|
'en_US/m-ailabs_low#mary_ann', |
|
], |
|
] |
|
|
|
|
|
SILENT_VIDEO = '_silent_video.mp4' |
|
|
|
|
|
|
|
|
|
|
|
for _img_, _text_, soundscape_text, _title_, _voice_ in DESCRIPTIONS[:20]: |
|
|
|
|
|
im = cv2.imread(PIC_DIR + _img_) |
|
h, w, _ = im.shape |
|
im = im[(h%2):, (w%2):, :] |
|
print(im.shape, "GLOBAL IM\n\n\n\n") |
|
fram = np.zeros((94, im.shape[1], 3), dtype=np.uint8) |
|
h, w, _ = fram.shape |
|
font = cv2.FONT_HERSHEY_SIMPLEX |
|
bottomLeftCornerOfText = (240, 74) |
|
fontScale = 2 |
|
fontColor = (255, 255, 255) |
|
thickness = 4 |
|
lineType = 2 |
|
cv2.putText(fram, _title_, |
|
bottomLeftCornerOfText, |
|
font, |
|
fontScale, |
|
fontColor, |
|
thickness, |
|
lineType) |
|
offset_h = 24 |
|
im[offset_h:h+offset_h, :w, :] = (.4 * im[offset_h:h+offset_h, :w, :] + .6 * fram).astype(np.uint8) |
|
|
|
cv2.imwrite('_tmp_banner.png', im) |
|
OUT_FILE = _img_.split('/')[-1].replace('.','__') + '.mp4' |
|
print(f'{OUT_FILE=}\n') |
|
subprocess.run( |
|
[ |
|
"python", |
|
"tts.py", |
|
"--text", PIC_DIR + _text_, |
|
'--image', '_tmp_banner.png', |
|
|
|
|
|
'--voice', _voice_, |
|
'--out_file', OUT_FILE, |
|
]) |