Recording terminal with live webcam to ascii output

Hi,
first of all, great tool, love it. :smiling_face_with_three_hearts:

I have a problem, where I was trying to combine the asciinema recording with a python script, that outputs my webcam’s live image to the terminal as ascii characters. So far, I wasn’t able to run both asciinema and the other script simultaneously. Either they run sequentially or i get some sort of dependencies conflicts. I’m on the standard mac terminal.

Would this be possible? Here’s the other script’s code:

import cv2
from time import sleep, time
import sys

import curses
from curses import wrapper

x = 160
sx = 4

chars = " .:=+#$&%@"
# ▓@╠■#§=+~/<\"':.
# @%&$#+=-:. 

size = x*sx, int(x*sx*0.75)
operating = False
ongoing = True
#font.set_bold(True)
fpsa = 0

br = (255, 255, 255)
fr = (0, 0, 0)

lenc = len(chars)

visload = False
mt = False
aa = False

def toAscii(pic, scr):
    global operating
    m = 0
    for y in pic:
        tm = max(y)
        if tm > m:
            m = tm

    fx = 0
    fy = 0

    h,w = scr.getmaxyx()

    #for y in pic:
        #for x in y:
    for _y in range(h-1):
        for _x in range(w-1):
            y = pic[int(_y/float(h) * len(pic))]
            x = y[int(_x/float(w) * len(y))]
            scr.addstr(_y, _x, chars[int(x/m*(lenc-1))], curses.color_pair(1))
            fx += 1
        fy += 1
        fx = 0
    operating = False


cap = cv2.VideoCapture(0)

def main(scr):

    global operating

    while True:
        ret, frame = cap.read()

        curses.init_pair(1, curses.COLOR_WHITEfhrt, curses.COLOR_BLACK)

        #colored = cv2.resize(cv2.resize(cv2.cvtColor(frame, 0), (x, int(x*0.75))), (640, 480))
        #colored = cv2.cvtColor(frame, 0)


        gray = cv2.resize(cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY), (x, int(x*0.75)))

        if not operating:
            operating = True
            if mt:
                _thread.start_new_thread(toAscii, (gray, scr))
            else:
                toAscii(gray, scr)

        scr.refresh()


        #gray = cv2.resize(gray, (640, 480), interpolation = cv2.INTER_NEAREST)


        #cv2.imshow('frame',cv2.resize(gray, (640, 480)))

def _main(scr):
    try:
        main(scr)
    except KeyboardInterrupt:
        pass

wrapper(_main)

cap.release()
cv2.destroyAllWindows()

Please bare with me, I’m not a programmer.
Cheers!
BW

ok, i got it to work after re-installing opencv, one of the second script’s dependencies, from inside the recording asciinema shell. script execution is a bit laggy, but it works now.