When writing the GUI code in Qt for a deep learning system, a general problem is to convert an image (read from disk or camera using OpenCV) in the form of a Numpy array, to a QImage to be shown in a form or widget.

There are basically two problems: Numpy array's data type has usually more than 8 bits and OpenCV reads the image in BGR format rather than the more general RGB.

The following Python (> 3.5) code shows how to solve these:

import PySide2.QtGui as qtg

def get_qimage(image: np.ndarray):
assert (np.max(image) <= 255)
image8 = image.astype(np.uint8, order='C', casting='unsafe')
height, width, colors = image8.shape
bytesPerLine = 3 * width

image = qtg.QImage(image8.data, width, height, bytesPerLine,
qtg.QImage.Format_RGB888)

image = image.rgbSwapped()
return image