[libcamera-devel] [PATCH v3 18/18] py: cam_qt: use libcamera.formats
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Wed May 18 15:58:36 CEST 2022
Hi Tomi,
Thank you for the patch.
On Wed, May 18, 2022 at 04:13:29PM +0300, Tomi Valkeinen wrote:
> Use the new libcamera.formats in cam_qt.py.
>
> Signed-off-by: Tomi Valkeinen <tomi.valkeinen at ideasonboard.com>
> ---
> src/py/cam/cam_qt.py | 17 +++++++++--------
> 1 file changed, 9 insertions(+), 8 deletions(-)
>
> diff --git a/src/py/cam/cam_qt.py b/src/py/cam/cam_qt.py
> index 91be2a08..142bb35e 100644
> --- a/src/py/cam/cam_qt.py
> +++ b/src/py/cam/cam_qt.py
> @@ -8,6 +8,7 @@ from numpy.lib.stride_tricks import as_strided
> from PIL import Image
> from PIL.ImageQt import ImageQt
> from PyQt5 import QtCore, QtGui, QtWidgets
> +import libcamera as libcam
> import numpy as np
> import sys
>
> @@ -87,9 +88,7 @@ def to_rgb(fmt, size, data):
> w = size.width
> h = size.height
>
> - fmt = str(fmt)
> -
> - if fmt == 'YUYV':
> + if fmt == libcam.formats.YUYV:
> # YUV422
> yuyv = data.reshape((h, w // 2 * 4))
>
> @@ -111,20 +110,22 @@ def to_rgb(fmt, size, data):
> rgb[:, :, 2] -= 226.8183044444304
> rgb = rgb.astype(np.uint8)
>
> - elif fmt == 'RGB888':
> + elif fmt == libcam.formats.RGB888:
> rgb = data.reshape((h, w, 3))
> rgb[:, :, [0, 1, 2]] = rgb[:, :, [2, 1, 0]]
>
> - elif fmt == 'BGR888':
> + elif fmt == libcam.formats.BGR888:
> rgb = data.reshape((h, w, 3))
>
> - elif fmt in ['ARGB8888', 'XRGB8888']:
> + elif fmt in [libcam.formats.ARGB8888, libcam.formats.XRGB8888]:
> rgb = data.reshape((h, w, 4))
> rgb = np.flip(rgb, axis=2)
> # drop alpha component
> rgb = np.delete(rgb, np.s_[0::4], axis=2)
>
> - elif fmt.startswith('S'):
> + elif str(fmt).startswith('S'):
> + # \todo implement PixelFormatInfo and use it here
PixelFormatInfo is not exposed through the libcamera public API, so I'd
drop this comment.
Reviewed-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
> + fmt = str(fmt)
> bayer_pattern = fmt[1:5]
> bitspp = int(fmt[5:])
>
> @@ -296,7 +297,7 @@ class MainWindow(QtWidgets.QWidget):
> h = cfg.size.height
> pitch = cfg.stride
>
> - if str(cfg.pixel_format) == 'MJPEG':
> + if cfg.pixel_format == libcam.formats.MJPEG:
> img = Image.open(BytesIO(mfb.planes[0]))
> qim = ImageQt(img).copy()
> pix = QtGui.QPixmap.fromImage(qim)
--
Regards,
Laurent Pinchart
More information about the libcamera-devel
mailing list