Learning OpenCV Day2-Mat在Qt中的显示以及像素格式

1.自定义一个QOpenGLWidget类

2.重写void paintEvent(QPaintEvent *event)方法

void Window::paintEvent(QPaintEvent *event)
{
    QOpenGLWidget::paintEvent(event);
    QPainter painter;
    cv::Mat mat = cv::imread("1.png");                //读取图像到Mat,mat一般存储为BGR的格式
    cv::cvtColor(mat, mat, cv::COLOR_BGR2RGB);        //讲BGR转换为RGB
    painter.begin(this);
    img = QImage(mat.data, mat.cols, mat.rows, QImage::Format_RGB888);
    painter.drawImage(QPoint(0,0),img);
    painter.end();
}

3.ROI矩形区域

    cv::Rect rect(100, 100, 500, 500);
    //第一个参数:x
    //第二个参数:y
    //第三个参数:width
    //第四个参数:height
    cv::Mat src = imread("1.png");
    cv::Mat roi = src(rect);
    imshow("ROI", roi);

4.像素格式

4.1 RGB

使用一个Vec{2,3,4,6}{b,w,s,i,f,d} 的容器存储
第一个大括号{2,3,4,6}是指像素的通道数(RGB就是3)
第二个大括号:代表像素的存储类型

(1) b:unsigned char
(2) w:unsigned short
(3) s:short
(4) i:int
(5) f:float
(6) d:double

4.2 YUV

YUV是记录图像的亮度、饱和度。Y代表亮度即一个类似与灰度的量,而U代表红色分量,V代表蓝色分量
YUV一般使用两个字节存储,相对于RGB少了一个像素,图像压缩率可以更高

4.3 GRAY

灰度图:由RGB计算可以得出:
公式如下:
GRAY = (30 * R + 59 * G + 11 * B + 50)/100;
注意可能超过255:可以使用

    cv::saturate_cast<uchar>(GRAY);//取0~255
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值