개정판 253c9730
issue #00000 compare 속도 및 메모리 최적화
- page 변셩시 이미지 안 보이는 문제 수정
Change-Id: I0efcd3d93178807d9bead96c38e81377ca6730fd
Markus.ImageComparer/ImageCompareBase.cs | ||
---|---|---|
45 | 45 |
try |
46 | 46 |
{ |
47 | 47 |
SetStatus("Image Load", 0, CompareStatus.Loading); |
48 |
OpenCvSharp.Size rSize = new OpenCvSharp.Size(resultSize.Width, resultSize.Height); |
|
48 | 49 |
|
49 |
Originalbitmap = ChangeBitmapFormatAndSize(Originalbitmap, resultSize, PixelFormat.Format24bppRgb); |
|
50 |
TargatBitmap = ChangeBitmapFormatAndSize(TargatBitmap, resultSize, PixelFormat.Format24bppRgb); |
|
50 |
//Originalbitmap = ChangeBitmapFormatAndSize(Originalbitmap, resultSize, PixelFormat.Format24bppRgb);
|
|
51 |
//TargatBitmap = ChangeBitmapFormatAndSize(TargatBitmap, resultSize, PixelFormat.Format24bppRgb);
|
|
51 | 52 |
|
52 | 53 |
// 원본이미지의 크키와 Format24bppRgb로 타켓 이미지를 변경 |
53 | 54 |
// 크기가 틀린 경우 비교시 바이트배열 오류 발생 |
... | ... | |
55 | 56 |
{ |
56 | 57 |
using (Mat TargatImageData = OpenCvSharp.Extensions.BitmapConverter.ToMat(TargatBitmap)) |
57 | 58 |
{ |
58 |
if (OriginalImageData.Size() != TargatImageData.Size())
|
|
59 |
if (OriginalImageData.Size() != rSize)
|
|
59 | 60 |
{ |
60 |
Cv2.Resize(TargatImageData, TargatImageData, OriginalImageData.Size()); |
|
61 |
Cv2.Resize(OriginalImageData, OriginalImageData, rSize); |
|
62 |
} |
|
63 |
|
|
64 |
if (TargatImageData.Size() != rSize) |
|
65 |
{ |
|
66 |
Cv2.Resize(TargatImageData, TargatImageData, rSize); |
|
61 | 67 |
} |
62 | 68 |
|
63 | 69 |
Cv2.CvtColor(OriginalImageData, OriginalImageData, ColorConversionCodes.BGR2GRAY); |
... | ... | |
83 | 89 |
return result; |
84 | 90 |
} |
85 | 91 |
|
92 |
protected Mat MathchesImageData(Mat OriginalImageData, Mat TargatImageData, Size resultSize) |
|
93 |
{ |
|
94 |
Mat result = new Mat(); |
|
95 |
|
|
96 |
try |
|
97 |
{ |
|
98 |
SetStatus("Image Load", 0, CompareStatus.Loading); |
|
99 |
OpenCvSharp.Size rSize = new OpenCvSharp.Size(resultSize.Width, resultSize.Height); |
|
100 |
|
|
101 |
// 크기가 틀린 경우 비교시 바이트배열 오류 발생 |
|
102 |
|
|
103 |
if (OriginalImageData.Size() != rSize) |
|
104 |
{ |
|
105 |
Cv2.Resize(OriginalImageData, OriginalImageData, rSize); |
|
106 |
} |
|
107 |
|
|
108 |
if (TargatImageData.Size() != rSize) |
|
109 |
{ |
|
110 |
Cv2.Resize(TargatImageData, TargatImageData, rSize); |
|
111 |
} |
|
112 |
|
|
113 |
Cv2.CvtColor(OriginalImageData, OriginalImageData, ColorConversionCodes.BGR2GRAY); |
|
114 |
Cv2.CvtColor(TargatImageData, TargatImageData, ColorConversionCodes.BGR2GRAY); |
|
115 |
|
|
116 |
using (Mat outputData = new Mat(new OpenCvSharp.Size(resultSize.Width, resultSize.Height), MatType.CV_8UC1)) |
|
117 |
{ |
|
118 |
Cv2.Absdiff(OriginalImageData, TargatImageData, outputData); |
|
119 |
// 틀린부분을 반환 |
|
120 |
Cv2.BitwiseNot(outputData, result); |
|
121 |
} |
|
122 |
} |
|
123 |
catch (Exception ex) |
|
124 |
{ |
|
125 |
throw ex; |
|
126 |
} |
|
127 |
finally |
|
128 |
{ |
|
129 |
} |
|
130 |
|
|
131 |
return result; |
|
132 |
} |
|
133 |
|
|
86 | 134 |
|
87 | 135 |
/// <summary> |
88 | 136 |
/// Image<TColor, TDepth>의 틀린 부분을 Rect로 반환 |
내보내기 Unified diff