Search before asking
Bug
When using PixelateAnnotator with no additional configuration, it throws an error if the area to pixelate is too small:
Traceback (most recent call last):
File "/home/ultra/clean.py", line 83, in <module>
annotated_frame = blur_annotator.annotate(
File "/opt/conda/lib/python3.10/site-packages/supervision/annotators/core.py", line 1253, in annotate
scaled_up_roi = cv2.resize(
cv2.error: OpenCV(4.8.1) /io/opencv/modules/imgproc/src/resize.cpp:4068: error: (-215:Assertion failed) !dsize.empty() in function 'resize'
I added this debug to this section
print(f"Box: {(x1, y1, x2, y2)}")
roi = scene[y1:y2, x1:x2]
print(f"ROI shape: {roi.shape}")
The last output before the error is:
Box: (644, 444, 678, 453)
ROI shape: (9, 34, 3)
I left the pixel size at the default (10), so I'm guessing the 9 is too small for it
As seen in the below code, I made this adjustment to automatically pick the largest possible pixel size and half it by 2, this works very well.
self.pixel_size = min(y2 - y1, x2 - x1) / 2
roi = scene[y1:y2, x1:x2]
scaled_down_roi = cv2.resize(
src=roi, dsize=None, fx=self.pixel_size, fy=self.pixel_size
)
This approach would also resolve an issue with the BlurAnnotator.
If the kernel size set to the default, and the area is large, the resulting area is still very identifiable.
Maybe we can resolve this by having the option to provide a lambda instead of a fixed number, so the user can dynamically decide how large the used kernel/pixel size should be.
If that's something worth implementing in the project, I would be happy to create a PR.
Environment
- Supervision 0.17.0 & 0.17.1
hardware not relevant
Minimal Reproducible Example
No response
Additional
No response
Are you willing to submit a PR?
Search before asking
Bug
When using PixelateAnnotator with no additional configuration, it throws an error if the area to pixelate is too small:
I added this debug to this section
The last output before the error is:
Box: (644, 444, 678, 453)
ROI shape: (9, 34, 3)
I left the pixel size at the default (10), so I'm guessing the 9 is too small for it
As seen in the below code, I made this adjustment to automatically pick the largest possible pixel size and half it by 2, this works very well.
This approach would also resolve an issue with the BlurAnnotator.
If the kernel size set to the default, and the area is large, the resulting area is still very identifiable.
Maybe we can resolve this by having the option to provide a lambda instead of a fixed number, so the user can dynamically decide how large the used kernel/pixel size should be.
If that's something worth implementing in the project, I would be happy to create a PR.
Environment
hardware not relevant
Minimal Reproducible Example
No response
Additional
No response
Are you willing to submit a PR?