Qt与opencv中QPixmap和opencv的联合用法

最初的问题是,我希望将graphicsView中的唯一item读取出来作为QImge传入到opencv下的cvtColor(cvImage,grayImage, cv::COLOR_BGRA2GRAY);函数去使用。

但是发现通过

QGraphicsPixmapItem* pixmapItem = qgraphicsitem_cast<QGraphicsPixmapItem*>(item);

 QPixmap oriPixmap = pixmapItem->pixmap();

QImage deelImage = oriPixmap.toImage().convertToFormat(QImage::Format_RGB32);;这样的方式得到cvtColor()函数的cvImage是有问题的,一直报错:

 OpenCV(3.4.1) Error: Assertion failed (scn == 3 || scn == 4) in cvtColor, file D:\opencv\sources\modules\imgproc\src\color.cpp, line 11115

terminate called after throwing an instance of 'cv::Exception'

what(): OpenCV(3.4.1) D:\opencv\sources\modules\imgproc\src\color.cpp:11115: error: (-215) scn == 3 || scn == 4 in function cvtColor

QImage的通道、格式、编码:

  1. 通道(Channels)QImage可以包含不同数量的通道,包括:

    • 1通道(灰度图像):每个像素一个通道,用于表示灰度级别。
    • 3 通道(RGB):每个像素包含红色、绿色和蓝色通道。
    • 4通道(RGBA):每个像素包含红色、绿色、蓝色和alpha(透明度)通道。
  2. 格式(Format)QImage可以采用不同的格式存储图像数据,如:

    • Format_Indexed8:单通道图像,每像素8位。
    • Format_RGB888:三通道RGB图像,每像素8位。
    • Format_ARGB32:四通道RGBA图像,每个像素8位。
    • ,等等其他格式可以存储不同通道数据的图像数据。
  3. 编码(Encoding)QImage可以保存不同编码的图像数据,但它通常用于表示图像的内部存储格式,而不是外部文件格式。编码指的是图像数据的存储方式,例如像素的排列和颜色的表示方法。不同的格式对应不同的编码方式。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值