Arithmetic operations
Peponi │ 2/17/2025 │ 6m
C#
NugetPackageOpenCvSharp4
Arithmetic operations
2/17/2025
6m
Peponi
C#
NugetPackageOpenCvSharp4
1. Introduction
OpenCvSharp4는 이미지에 대한 연산 기능을 제공하여 이미지와 이미지, 이미지와 스칼라 연산을 쉽게 할 수 있다. 이 때, 연산은 각 픽셀의 채널별로 수행된다.
이 문서에서는 다음 메서드에 대한 예시를 간략하게 알아본다.
Cv2.Add()
Cv2.Subtract()
Cv2.Multiply()
Cv2.Divide()
Cv2.Max()
Cv2.Min()
Cv2.Abs()
Cv2.AbsDiff()
실습에 사용할 이미지는 다음과 같다.
2. Add
Cv2.Add()
메서드는 다음 연산을 수행한다.
- 이미지 + 이미지
- 이미지 + 스칼라
이미지 간 연산을 빠르게 연산을 수행할 수 있도록 +
연산자 또한 지원한다. (스칼라의 경우 지원하지 않는다.)
private void Add(Mat image1, Mat image2)
{
using var result1 = image1 + image2;
using var result2 = new Mat();
Cv2.Add(image1, image2, result2);
}
private void Add(Mat image)
{
using var result = new Mat();
Cv2.Add(image, 20, result);
}
3. Subtract
Cv2.Subtract()
메서드는 다음 연산을 수행한다.
- 이미지 - 이미지
- 이미지 - 스칼라
이미지 간 연산을 빠르게 연산을 수행할 수 있도록 -
연산자 또한 지원한다. (스칼라의 경우 지원하지 않는다.)
private void Subtract(Mat image1, Mat image2)
{
using var result1 = image1 - image2;
using var result2 = new Mat();
Cv2.Subtract(image1, image2, result2);
}
private void Subtract(Mat image)
{
using var result = new Mat();
Cv2.Subtract(image, 20, result);
}
4. Multiply
Cv2.Multiply()
메서드는 다음 연산을 수행한다.
- 이미지 * 이미지
- 이미지 * 스칼라
스칼라 연산을 빠르게 연산을 수행할 수 있도록 *
연산자 또한 지원한다. (이미지 간 연산의 경우 지원하지 않는다.)
private void Multiply(Mat image1, Mat image2)
{
using var result = new Mat();
Cv2.Multiply(image1, image2, result);
}
private void Multiply(Mat image)
{
using var result1 = image * 5;
using var result2 = new Mat();
Cv2.Multiply(image, 10, result2);
}
5. Divide
Cv2.Divide()
메서드는 다음 연산을 수행한다.
- 이미지 / 이미지
- 이미지 / 스칼라
연산을 빠르게 연산을 수행할 수 있도록 /
연산자 또한 지원한다.
private void Divide(Mat image1, Mat image2)
{
using var result1 = image1 / image2;
using var result2 = new Mat();
Cv2.Divide(image1, image2, result2);
}
private void Divide(Mat image)
{
using var result1 = image / 5;
using var result2 = new Mat();
Cv2.Divide(image, 10, result2);
}
6. Max
Cv2.Max()
메서드는 다음 연산을 수행한다.
- 이미지, 이미지
- 이미지, 스칼라
private void Max(Mat image1, Mat image2)
{
using var result = new Mat();
Cv2.Max(image1, image2, result);
}
private void Max(Mat image)
{
using var result = new Mat();
Cv2.Max(image, 50, result);
}
7. Min
Cv2.Min()
메서드는 다음 연산을 수행한다.
- 이미지, 이미지
- 이미지, 스칼라
private void Min(Mat image1, Mat image2)
{
using var result = new Mat();
Cv2.Min(image1, image2, result);
}
private void Min(Mat image)
{
using var result = new Mat();
Cv2.Min(image, 50, result);
}
8. Abs
Cv2.Abs()
메서드는 다음 연산을 수행한다.
- MatExpr : 주어진 연산 수행 후 absolute value 계산
- Mat : 주어진 matrix의 absolute value 계산
private void Abs(Mat image1, Mat image2)
{
using var expr = image1 - image2;
using var result = Cv2.Abs(expr);
}
private void Abs(Mat image)
{
using var result = Cv2.Abs(image);
}
9. AbsDiff
Cv2.AbsDiff()
메서드는 다음 연산을 수행한다.
- 이미지, 이미지
- 이미지, 스칼라
private void AbsDiff(Mat image1, Mat image2)
{
using var result = new Mat();
Cv2.Absdiff(image1, image2, result);
}
private void AbsDiff(Mat image)
{
using var result = new Mat();
Cv2.Absdiff(image, 50, result);
}