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