Opencv读图保存图像颜色效果总结

Opencv 读图

默认是:BGR 格式
直接 imwrite: 图像效果是正常的 RGB 格式
如果图像做了 COLOR_BGR2rgb
imwrite:图像效果 是 BGR 格式,蓝红空间颠倒的
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用Qt的QThread类来实现多线程读取和处理图像,同时利用OpenCV库对图像进行操作。以下是一个简单的示例代码: ```c++ #include <QApplication> #include <QThread> #include <QMutex> #include <QImage> #include <opencv2/opencv.hpp> class ImageProcessor : public QObject { Q_OBJECT public: ImageProcessor(QObject *parent = nullptr) : QObject(parent) {} public slots: void processImage(const QString &filename) { cv::Mat image = cv::imread(filename.toStdString()); // 对图像进行操作 cv::cvtColor(image, image, cv::COLOR_BGR2GRAY); cv::GaussianBlur(image, image, cv::Size(5, 5), 0); // 将处理后的图像转换为QImage格式 QImage qimage(image.data, image.cols, image.rows, image.step, QImage::Format_Grayscale8); emit imageProcessed(qimage); } signals: void imageProcessed(const QImage &image); }; int main(int argc, char *argv[]) { QApplication app(argc, argv); ImageProcessor processor; QThread thread; processor.moveToThread(&thread); thread.start(); QObject::connect(&processor, &ImageProcessor::imageProcessed, [](const QImage &image) { // 在主线程中显示图像 QLabel label; label.setPixmap(QPixmap::fromImage(image)); label.show(); }); // 在主线程中发送图像处理请求 QMetaObject::invokeMethod(&processor, "processImage", Qt::QueuedConnection, Q_ARG(QString, "image.jpg")); return app.exec(); } #include "main.moc" ``` 这个例子中,我们创建了一个ImageProcessor类,它继承自QObject,并包含一个processImage()槽函数,用于读取和处理图像。在主函数中,我们创建了一个QThread对象,并将ImageProcessor对象移动到该线程中。然后,我们连接了ImageProcessor对象的imageProcessed()信号到一个lambda表达式中,用于在主线程中显示处理后的图像。最后,我们使用QMetaObject::invokeMethod()函数在主线程中发送图像处理请求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值