Skip to content

Commit 0ca0829

Browse files
committed
feat: add color conversion to BGR format in image resizing
1 parent 0071d13 commit 0ca0829

1 file changed

Lines changed: 11 additions & 8 deletions

File tree

src/hashing.ts

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ const { cv } = require_('opencv-wasm') as {
2727
Size: new (width: number, height: number) => unknown;
2828
CV_8UC3: number;
2929
INTER_LINEAR: number;
30+
COLOR_RGB2BGR: number;
3031
resize(
3132
src: unknown,
3233
dst: unknown,
@@ -35,6 +36,11 @@ const { cv } = require_('opencv-wasm') as {
3536
fy: number,
3637
interpolation: number,
3738
): void;
39+
cvtColor(
40+
src: unknown,
41+
dst: unknown,
42+
code: number,
43+
): void;
3844
};
3945
};
4046

@@ -98,16 +104,13 @@ export async function computeHashesFromStream(
98104
const dstMat = new cv.Mat(448, 448, cv.CV_8UC3);
99105
cv.resize(srcMat, dstMat, new cv.Size(448, 448), 0, 0, cv.INTER_LINEAR);
100106

101-
data = Buffer.from(dstMat.data);
107+
const bgrMat = new cv.Mat(448, 448, cv.CV_8UC3);
108+
cv.cvtColor(dstMat, bgrMat, cv.COLOR_RGB2BGR);
109+
110+
data = Buffer.from(bgrMat.data);
102111
srcMat.delete();
103112
dstMat.delete();
104-
105-
// Swap R and B channels in-place (RGB → BGR)
106-
for (let i = 0; i < data.length; i += 3) {
107-
const r = data[i]!;
108-
data[i] = data[i + 2]!; // R position gets B
109-
data[i + 2] = r; // B position gets R
110-
}
113+
bgrMat.delete();
111114
imageFormat = ImageFormat.IMAGE_FORMAT_RAW_UINT8_BGR;
112115
} else {
113116
data = await buffer(stream);

0 commit comments

Comments
 (0)