I get a gtk-WARNING when trying:
cv2.imshow("WindowName", image)
I'm using this to watch a live stream one frame at a time. Are there any alternative libraries I could use? I tried several other options like PIL and Tkinter as well as wand, but could get none of them to work for various different reason.
You need to use a windowing system to display images using imshow.
(That can be enabled in settings running sudo raspi-config)
If you absolutely, positively need to display images without using a windowing system, consider providing an html/web interface. Two options that come to mind when serving a web interface are:

Creating an HTTP video stream (serve the output image as if it's an IP camera, kind of)
Stream the output matrix as a jpg blob via websockets
Show image using OpenCV in Python on a Raspberry Pi terminal