Implement Mat.reshape() method to fix "img.reshape is not a function" error #93
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR implements the missing
Mat.reshape()method that was declared in TypeScript types but not available at runtime, causing the error "img.reshape is not a function" when users tried to reshape matrices.Problem
Users encountered this error when trying to use the
reshapemethod:The method was properly typed in
src/types/opencv/Mat.tsbut missing from the actual OpenCV.js runtime build.Solution
Added a complete implementation of the
reshape()method that follows OpenCV semantics:cn: Number of channels in result matrix. Use-1to auto-calculate based on total elements and rowsrows(optional): Number of rows in result matrixrows × cols × channels)Key Features
cn = -1, intelligently determines optimal channel count (typically 1 for vectorization)Usage Examples
Implementation Details
src/mat-extensions.tswith the reshape implementationThe implementation handles common computer vision use cases like image vectorization, channel reorganization, and matrix flattening while maintaining full compatibility with existing code.
Fixes #53.
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.