qurator-spk / sbb_binarization

Document Image Binarization
Apache License 2.0
67 stars 14 forks source link

support image with alpha channels #51

Closed bertsky closed 1 year ago

bertsky commented 1 year ago

Some of OCR-D's processors produce derived images with transparency (in masked parts like after rotation or polygonal cropping). Alas, the current implementation of this module's OCR-D processor cannot consume them:

  File "/local/ocr-d/ocrd_all/venv/lib/python3.10/site-packages/sbb_binarize/ocrd_cli.py", line 158, in cli
    return ocrd_cli_wrap_processor(SbbBinarizeProcessor, *args, **kwargs)
  File "/local/ocr-d/ocrd_all/venv/lib/python3.10/site-packages/ocrd/decorators/__init__.py", line 110, in ocrd_cli_wrap_processor
    run_processor(processorClass, ocrd_tool, mets, workspace=workspace, **kwargs)
  File "/local/ocr-d/ocrd_all/venv/lib/python3.10/site-packages/ocrd/processor/helpers.py", line 88, in run_processor
    processor.process()
  File "/local/ocr-d/ocrd_all/venv/lib/python3.10/site-packages/sbb_binarize/ocrd_cli.py", line 109, in process
    bin_image = cv2pil(self.binarizer.run(image=pil2cv(page_image), use_patches=True))
  File "/local/ocr-d/ocrd_all/venv/lib/python3.10/site-packages/sbb_binarize/ocrd_cli.py", line 35, in pil2cv
    return cv2.cvtColor(pil_as_np_array, color_conversion)
cv2.error: OpenCV(4.6.0) /io/opencv/modules/imgproc/src/color.simd_helpers.hpp:92: error: (-2:Unspecified error) in function 'cv::impl::{anonymous}::CvtHelper<VScn, VDcn, VDepth, sizePolicy>::CvtHelper(cv::InputArray, cv::OutputArray, int) [with VScn = cv::impl::{anonymous}::Set<3, 4>; VDcn = cv::impl::{anonymous}::Set<3, 4>; VDepth = cv::impl::{anonymous}::Set<0, 2, 5>; cv::impl::{anonymous}::SizePolicy sizePolicy = cv::impl::<unnamed>::NONE; cv::InputArray = const cv::_InputArray&; cv::OutputArray = const cv::_OutputArray&]'
> Invalid number of channels in input image:
>     'VScn::contains(scn)'
> where
>     'scn' is 2

IMO it should suffice reducing transparency to white before proceeding with OpenCV import.