Explicação detalhada da operação de adição
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