C# OpenCV 강좌 : 제 49강 - 연산 (1)
연산(Calculate)
다양한 연산을 활용하여 영상이나 이미지를 변환을 할 수 있습니다.
원본(Source, src)
은 영상이나 이미지를 사용합니다.
메인 코드
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using OpenCvSharp;
namespace Project
{
class OpenCV : IDisposable
{
IplImage bin;
IplImage calc;
public IplImage Binary(IplImage src)
{
bin = new IplImage(src.Size, BitDepth.U8, 1);
Cv.CvtColor(src, bin, ColorConversion.BgrToGray);
Cv.Threshold(bin, bin, 100, 255, ThresholdType.Binary);
return bin;
}
public void Calculate_1(IplImage src)
{
IplImage src_bin = src.Clone();
calc = new IplImage(src.Size, BitDepth.U8, 3);
this.Binary(src_bin).CvtColor(src_bin, ColorConversion.GrayToBgr);
Cv.And(src, src_bin, calc);
CvWindow And = new CvWindow("And", WindowMode.StretchImage, calc);
Cv.Or(src, src_bin, calc);
CvWindow Or = new CvWindow("Or", WindowMode.StretchImage, calc);
Cv.Xor(src, src_bin, calc);
CvWindow Xor = new CvWindow("Xor", WindowMode.StretchImage, calc);
Cv.Not(src, calc);
CvWindow Not = new CvWindow("Not", WindowMode.StretchImage, calc);
Cv.WaitKey();
{
And.Close();
Or.Close();
Xor.Close();
Not.Close();
}
}
public void Dispose()
{
if (bin != null) Cv.ReleaseImage(bin);
if (calc != null) Cv.ReleaseImage(calc);
}
}
}
세부 코드
IplImage src_bin = src.Clone();
calc = new IplImage(src.Size, BitDepth.U8, 3);
src_bin
을 생성하여 src
의 이미지를 복제
합니다.
calc
를 결과 이미지로 사용합니다.
this.Binary(src_bin).CvtColor(src_bin, ColorConversion.GrayToBgr);
src_bin
에 이진화
를 적용한 후, 색상 형식
으로 즉각 변환시킵니다.
And 연산
Cv.And(src, src_bin, calc);
CvWindow And = new CvWindow("And", WindowMode.StretchImage, calc);
Cv.And()
를 이용하여 And
연산을 실행합니다.
Cv.And(이미지1, 이미지2, 결과, 마스크)
입니다.
이미지2
가 흑백 이미지 일 경우, 이미지2
의 흰색 부분만 출력합니다.
Or 연산
Cv.Or(src, src_bin, calc);
CvWindow Or = new CvWindow("Or", WindowMode.StretchImage, calc);
Cv.And()
를 이용하여 And
연산을 실행합니다.
Cv.And(이미지1, 이미지2, 결과, 마스크)
입니다.
이미지2
가 흑백 이미지 일 경우, 이미지2
의 검은색 부분만 출력합니다.
Xor 연산
Cv.Xor(src, src_bin, calc);
CvWindow Xor = new CvWindow("Xor", WindowMode.StretchImage, calc);
Cv.Xor()
를 이용하여 Xor
연산을 실행합니다.
Cv.Xor(이미지1, 이미지2, 결과, 마스크)
입니다.
이미지2
가 흑백 이미지 일 경우, 이미지2
의 검은색 부분만 출력하며, 흰색 부분은 반전 출력합니다.
Not 연산
Cv.Not(src, calc);
CvWindow Not = new CvWindow("Not", WindowMode.StretchImage, calc);
Cv.Not()
를 이용하여 Not
연산을 실행합니다.
Cv.Not(이미지, 결과, 마스크)
입니다.
이미지
가 흑백 이미지 일 경우, 반전 시켜 출력합니다.
출력 결과
And 연산
Or 연산
Xor 연산
Not 연산
공유하기


댓글 남기기