Operações de operação de pixel de imagem OpenCV

Explicação detalhada da operação de adição

Adição de pixels

Adição, subtração, multiplicação e divisão

#include <opencv2/opencv.hpp>

using namespace cv;

int main() {
    
    
    Mat image = imread("image.jpg");

    if (image.empty()) {
    
    
        std::cout << "无法加载图像" << std::endl;
        return -1;
    }

    // 加法变换
    Mat addResult;
    add(image, Scalar(50, 50, 50), addResult); // 将像素值增加50

    // 减法变换
    Mat subtractResult;
    subtract(image, Scalar(50, 50, 50), subtractResult); // 将像素值减去50

    // 乘法变换
    Mat multiplyResult;
    multiply(image, Scalar(0.5, 0.5, 0.5), multiplyResult); // 将像素值乘以0.5

    // 除法变换
    Mat divideResult;
    divide(image, Scalar(2.0, 2.0, 2.0), divideResult); // 将像素值除以2.0

    imshow("Original Image", image);
    imshow("Addition Result", addResult);
    imshow("Subtraction Result", subtractResult);
    imshow("Multiplication Result", multiplyResult);
    imshow("Division Result", divideResult);

    waitKey(0);

    return 0;
}

No exemplo acima, uma imagem é carregada e depois transformada por adição, subtração, multiplicação e divisão respectivamente. As transformações aditivas e subtrativas usam escalares para especificar o valor da transformação, e as transformações de multiplicação e divisão usam escalares para especificar fatores de escala.

Observe que para transformações aditivas e subtrativas, você pode usar valores escalares positivos ou negativos. Para transformações de multiplicação e divisão, o valor escalar deve ser um número de ponto flutuante maior que 0.


Eu recomendo uma aula de projeto da Lingsheng Academy. Pessoalmente, acho que o professor ensinou bem. Gostaria de compartilhar com vocês:
Cartão de aprendizagem Lingsheng Platinum (incluindo infraestrutura/armazenamento de alto desempenho/nativo da nuvem golang/áudio e vídeo/kernel Linux)
https://xxetb.xet.tech/s/VsFMs

Acho que você gosta

Origin blog.csdn.net/qq_40135848/article/details/132865313
Recomendado
Clasificación