彩色图像Opencv转Qimage【避坑】

场景:
工业相机取流后,用cvMat保存,然后转Qimage在主界面中显示。
pixdat.constData():相机流的内存地址

cv::Mat mat = cv::Mat(height, width, CV_8UC3);
std::memcpy(mat.data, pixdat.constData(), pixdat.size());
QImage imageQt(mat.data, mat.cols, mat.rows, mat.step, QImage::Format_BGR888);
//使用Qimage自带函数 进行 BGR -》 RGB 通道转换
QImage image = imageQt.rgbSwapped(); 

这种方式效率很慢(界面巨卡)。怀疑Qimage内部没有针对图像处理进行优化(加速)

如果 BGR -》 RGB 通道转换 使用cvMat进行,然后再转换成Qimage,则界面显示很顺畅!

cv::Mat mat = cv::Mat(height, width, CV_8UC3);
std::memcpy(mat.data, pixdat.constData(), pixdat.size());
cv::Mat rgbMat;
cv::cvtColor(mat, rgbMat, cv::COLOR_BGR2RGB);
QImage imageQt(mat.data, mat.cols, mat.rows, mat.step, QImage::Format_BGR888);
QImage image = imageQt.copy();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值