Ajuste de brilho e contraste da imagem Qt + opencv

Ajuste de brilho e contraste da imagem Qt + opencv

1. Base teórica

g(i,j) = alfa * f(i,j) + beta

Entre eles, i e j representam a i-ésima linha e a j-ésima coluna do pixel. g(i,j) é o pixel da imagem de saída, alfa é o coeficiente de controle de contraste e beta é o coeficiente de controle de brilho.
Claro, para alterar alguns valores de pixels, você precisa acessar os valores dos pixels. Opencv fornece alguns métodos de acesso aos pixels. Para pixels de imagem de 3 canais, acesse m_srcMat.at(i, j
)[0] //B
m_srcMat.at(i,j) )[1] //G
m_srcMat.at(i,j)[2] //R

2. Código principal

int m_nContrastValue = 100; //对比度值
int m_nBrightValue = 0; //亮度值
Mat m_srcMat,m_dstMat; //原图像、输出图像

void BrightContrast::changeBrightContrast()
{
    
    
    double alpha = m_nContrastValue*0.01;
    int beta = m_nBrightValue;
    int ch = m_srcMat.channels();
    qDebug("alpha= %lf,beta= %d",alpha,beta);

#if 0
    //m_dstMat(i,j) = alpha*m_srcMat(i,j) + beta
    for(int row=0;row<m_srcMat.rows;row++)
    {
    
    
        for(int col=0;col<m_srcMat.cols;col++)
        {
    
    
            if(ch == 3)
            {
    
    
                for(int c=0;c<3;c++)
                {
    
    
                    m_dstMat.at<Vec3b>(row,col)[c] = saturate_cast<uchar>(alpha*(m_srcMat.at<Vec3b>(row,col)[c]) + beta);
                }
            }
        }
    }
#else
    m_srcMat.convertTo(m_dstMat, -1, alpha, beta);
#endif
    bgrMat2Image(m_dstMat);
}

Aqui estão 2 métodos mostrados:
Método 1: Use um loop for para operar pixel por pixel.
Método 2: Use a função void convertTo(OutputArray m, int rtype, double alpha=1, double beta=0) const;
m: indica o resultado de saída
rtype: -1 indica o mesmo que a imagem original
alfa: fator de transformação de escala
beta : deslocamento do coeficiente de transformação de escala

3. Exibição de efeito

Insira a descrição da imagem aqui
Postei o link da demonstração. Se você quiser dar uma olhada, pode consultar:
https://download.csdn.net/download/haohaohaihuai/12442739

Autor: Programador Feima.
Bem-vindo ao intercâmbio técnico: QQ: 255895056.
Por favor, indique a fonte para reimpressão. Se houver alguma inadequação, corrija-me.

Acho que você gosta

Origin blog.csdn.net/haohaohaihuai/article/details/106254431
Recomendado
Clasificación