endoreg-db 0.3.6__py3-none-any.whl → 0.3.7__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- endoreg_db/admin.py +3 -3
- endoreg_db/apps.py +6 -6
- endoreg_db/data/__init__.py +67 -64
- endoreg_db/data/active_model/data.yaml +2 -2
- endoreg_db/data/case_template/rule/00_patient_lab_sample_add_default_value.yaml +167 -167
- endoreg_db/data/case_template/rule/01_patient-set-age.yaml +7 -7
- endoreg_db/data/case_template/rule/01_patient-set-gender.yaml +8 -8
- endoreg_db/data/case_template/rule/11_create_patient_lab_sample.yaml +22 -22
- endoreg_db/data/case_template/rule/12_create-patient_medication-anticoagulation.yaml +18 -18
- endoreg_db/data/case_template/rule/13_create-patient_medication_schedule-anticoagulation.yaml +18 -18
- endoreg_db/data/case_template/rule/19_create_patient.yaml +16 -16
- endoreg_db/data/case_template/rule_type/base_types.yaml +35 -35
- endoreg_db/data/case_template/rule_value_type/base_types.yaml +58 -58
- endoreg_db/data/case_template/template/base.yaml +7 -7
- endoreg_db/data/case_template/template_type/pre_endoscopy.yaml +2 -2
- endoreg_db/data/case_template/tmp/_rule_value +13 -13
- endoreg_db/data/case_template/tmp/rule/01_atrial_fibrillation.yaml +21 -21
- endoreg_db/data/case_template/tmp/rule/02_create_object.yaml +9 -9
- endoreg_db/data/case_template/tmp/template/atrial_fibrillation_low_risk.yaml +6 -6
- endoreg_db/data/center/data.yaml +59 -59
- endoreg_db/data/center_resource/green_endoscopy_dashboard_CenterResource.yaml +144 -144
- endoreg_db/data/center_waste/green_endoscopy_dashboard_CenterWaste.yaml +48 -48
- endoreg_db/data/disease/cardiovascular.yaml +37 -37
- endoreg_db/data/disease/hepatology.yaml +4 -4
- endoreg_db/data/disease/misc.yaml +5 -5
- endoreg_db/data/disease/renal.yaml +4 -4
- endoreg_db/data/disease_classification/chronic_kidney_disease.yaml +5 -5
- endoreg_db/data/disease_classification/coronary_vessel_disease.yaml +5 -5
- endoreg_db/data/disease_classification_choice/chronic_kidney_disease.yaml +40 -40
- endoreg_db/data/disease_classification_choice/coronary_vessel_disease.yaml +19 -19
- endoreg_db/data/distribution/date/patient.yaml +6 -6
- endoreg_db/data/distribution/single_categorical/patient.yaml +6 -6
- endoreg_db/data/emission_factor/green_endoscopy_dashboard_EmissionFactor.yaml +132 -132
- endoreg_db/data/endoscope_type/data.yaml +10 -10
- endoreg_db/data/endoscopy_processor/data.yaml +45 -45
- endoreg_db/data/event/cardiology.yaml +27 -27
- endoreg_db/data/event/neurology.yaml +13 -13
- endoreg_db/data/event/surgery.yaml +12 -12
- endoreg_db/data/event/thrombembolism.yaml +19 -19
- endoreg_db/data/examination/examinations/data.yaml +65 -65
- endoreg_db/data/examination/time/data.yaml +47 -47
- endoreg_db/data/examination/time-type/data.yaml +7 -7
- endoreg_db/data/examination/type/data.yaml +5 -5
- endoreg_db/data/gender/data.yaml +18 -18
- endoreg_db/data/information_source/data.yaml +30 -30
- endoreg_db/data/information_source/medication.yaml +5 -5
- endoreg_db/data/lab_value/cardiac_enzymes.yaml +30 -30
- endoreg_db/data/lab_value/coagulation.yaml +48 -48
- endoreg_db/data/lab_value/electrolytes.yaml +189 -189
- endoreg_db/data/lab_value/gastrointestinal_function.yaml +121 -121
- endoreg_db/data/lab_value/hematology.yaml +169 -169
- endoreg_db/data/lab_value/hormones.yaml +53 -53
- endoreg_db/data/lab_value/lipids.yaml +44 -44
- endoreg_db/data/lab_value/misc.yaml +30 -30
- endoreg_db/data/lab_value/renal_function.yaml +10 -10
- endoreg_db/data/label/label/data.yaml +62 -62
- endoreg_db/data/label/label-set/data.yaml +17 -17
- endoreg_db/data/label/label-type/data.yaml +6 -6
- endoreg_db/data/medication/anticoagulation.yaml +64 -64
- endoreg_db/data/medication/tah.yaml +69 -69
- endoreg_db/data/medication_indication/anticoagulation.yaml +120 -120
- endoreg_db/data/medication_indication_type/data.yaml +10 -10
- endoreg_db/data/medication_indication_type/thrombembolism.yaml +40 -40
- endoreg_db/data/medication_intake_time/base.yaml +30 -30
- endoreg_db/data/medication_schedule/apixaban.yaml +94 -94
- endoreg_db/data/medication_schedule/ass.yaml +12 -12
- endoreg_db/data/medication_schedule/enoxaparin.yaml +26 -26
- endoreg_db/data/model_type/data.yaml +6 -6
- endoreg_db/data/network_device/data.yaml +17 -0
- endoreg_db/data/network_device_type/data.yaml +8 -0
- endoreg_db/data/patient_lab_sample_type/generic.yaml +5 -5
- endoreg_db/data/pdf_type/data.yaml +28 -28
- endoreg_db/data/product/green_endoscopy_dashboard_Product.yaml +66 -66
- endoreg_db/data/product_group/green_endoscopy_dashboard_ProductGroup.yaml +33 -33
- endoreg_db/data/product_material/green_endoscopy_dashboard_ProductMaterial.yaml +308 -308
- endoreg_db/data/product_weight/green_endoscopy_dashboard_ProductWeight.yaml +88 -88
- endoreg_db/data/profession/data.yaml +70 -70
- endoreg_db/data/reference_product/green_endoscopy_dashboard_ReferenceProduct.yaml +55 -55
- endoreg_db/data/report_reader_flag/ukw-examination-generic.yaml +26 -26
- endoreg_db/data/report_reader_flag/ukw-histology-generic.yaml +19 -19
- endoreg_db/data/resource/green_endoscopy_dashboard_Resource.yaml +15 -15
- endoreg_db/data/transport_route/green_endoscopy_dashboard_TransportRoute.yaml +12 -12
- endoreg_db/data/unit/concentration.yaml +92 -92
- endoreg_db/data/unit/data.yaml +17 -17
- endoreg_db/data/unit/length.yaml +30 -30
- endoreg_db/data/unit/misc.yaml +19 -19
- endoreg_db/data/unit/rate.yaml +5 -5
- endoreg_db/data/unit/time.yaml +12 -12
- endoreg_db/data/unit/volume.yaml +35 -35
- endoreg_db/data/unit/weight.yaml +37 -37
- endoreg_db/data/waste/data.yaml +11 -11
- endoreg_db/forms/__init__.py +2 -2
- endoreg_db/forms/questionnaires/tto_questionnaire.py +23 -23
- endoreg_db/forms/settings/__init__.py +8 -8
- endoreg_db/forms/unit.py +5 -5
- endoreg_db/management/commands/_load_model_template.py +40 -40
- endoreg_db/management/commands/delete_all.py +18 -18
- endoreg_db/management/commands/delete_legacy_images.py +19 -19
- endoreg_db/management/commands/delete_legacy_videos.py +16 -16
- endoreg_db/management/commands/extract_legacy_video_frames.py +18 -18
- endoreg_db/management/commands/fetch_legacy_image_dataset.py +32 -32
- endoreg_db/management/commands/fix_auth_permission.py +20 -20
- endoreg_db/management/commands/import_legacy_images.py +94 -94
- endoreg_db/management/commands/import_legacy_videos.py +76 -76
- endoreg_db/management/commands/load_active_model_data.py +44 -44
- endoreg_db/management/commands/load_ai_model_data.py +44 -44
- endoreg_db/management/commands/load_base_db_data.py +132 -128
- endoreg_db/management/commands/load_center_data.py +42 -42
- endoreg_db/management/commands/load_disease_classification_choices_data.py +40 -40
- endoreg_db/management/commands/load_disease_classification_data.py +40 -40
- endoreg_db/management/commands/load_disease_data.py +39 -39
- endoreg_db/management/commands/load_distribution_data.py +65 -65
- endoreg_db/management/commands/load_endoscope_type_data.py +44 -44
- endoreg_db/management/commands/load_endoscopy_processor_data.py +44 -44
- endoreg_db/management/commands/load_event_data.py +40 -40
- endoreg_db/management/commands/load_examination_data.py +74 -74
- endoreg_db/management/commands/load_g_play_data.py +112 -112
- endoreg_db/management/commands/load_gender_data.py +43 -43
- endoreg_db/management/commands/load_green_endoscopy_wuerzburg_data.py +132 -132
- endoreg_db/management/commands/load_information_source.py +44 -44
- endoreg_db/management/commands/load_lab_value_data.py +49 -49
- endoreg_db/management/commands/load_label_data.py +66 -66
- endoreg_db/management/commands/load_medication_data.py +40 -40
- endoreg_db/management/commands/load_medication_indication_data.py +62 -62
- endoreg_db/management/commands/load_medication_indication_type_data.py +40 -40
- endoreg_db/management/commands/load_medication_intake_time_data.py +40 -40
- endoreg_db/management/commands/load_medication_schedule_data.py +54 -54
- endoreg_db/management/commands/load_network_data.py +49 -0
- endoreg_db/management/commands/load_pdf_type_data.py +60 -60
- endoreg_db/management/commands/load_profession_data.py +43 -43
- endoreg_db/management/commands/load_report_reader_flag.py +45 -45
- endoreg_db/management/commands/load_unit_data.py +45 -45
- endoreg_db/management/commands/load_user_groups.py +28 -28
- endoreg_db/management/commands/register_ai_model.py +65 -65
- endoreg_db/management/commands/reset_celery_schedule.py +9 -9
- endoreg_db/migrations/0001_initial.py +582 -582
- endoreg_db/migrations/0002_rawvideofile.py +26 -26
- endoreg_db/migrations/0003_rawvideofile_frames_required.py +18 -18
- endoreg_db/migrations/0004_rename_hash_rawvideofile_video_hash.py +18 -18
- endoreg_db/migrations/0005_ffmpegmeta_remove_videoimportmeta_center_and_more.py +56 -56
- endoreg_db/migrations/0006_rawvideofile_center_alter_videometa_processor.py +25 -25
- endoreg_db/migrations/0007_rawvideofile_processor.py +19 -19
- endoreg_db/migrations/0008_rename_frames_required_rawvideofile_state_frames_required.py +18 -18
- endoreg_db/migrations/0009_sensitivemeta_rawvideofile_sensitive_meta.py +31 -31
- endoreg_db/migrations/0010_rename_endoscope_serial_number_sensitivemeta_endoscope_sn.py +18 -18
- endoreg_db/migrations/0011_rawvideofile_state_sensitive_data_retrieved.py +18 -18
- endoreg_db/migrations/0012_rawvideofile_prediction_dir_and_more.py +109 -109
- endoreg_db/migrations/0013_rawpdffile.py +31 -31
- endoreg_db/migrations/0014_pdftype_alter_rawpdffile_file_pdfmeta.py +38 -38
- endoreg_db/migrations/0015_rename_report_processed_rawpdffile_state_report_processed_and_more.py +31 -31
- endoreg_db/migrations/0016_rawpdffile_state_report_processing_required.py +18 -18
- endoreg_db/migrations/0017_firstname_lastname_center_first_names_and_more.py +37 -37
- endoreg_db/migrations/0018_reportreaderflag_reportreaderconfig.py +37 -37
- endoreg_db/migrations/0019_pdftype_cut_off_above_lines_and_more.py +42 -42
- endoreg_db/migrations/0020_rename_endoscopy_info_line_pdftype_endoscope_info_line.py +18 -18
- endoreg_db/migrations/0021_alter_pdftype_endoscope_info_line.py +19 -19
- endoreg_db/migrations/0022_alter_pdftype_endoscope_info_line.py +19 -19
- endoreg_db/migrations/0023_ttoquestionnaire_alter_pdftype_endoscope_info_line.py +59 -59
- endoreg_db/migrations/0024_remove_ttoquestionnaire_infections_and_more.py +27 -27
- endoreg_db/migrations/0025_event_alter_rawpdffile_file_patientevent.py +42 -42
- endoreg_db/migrations/0026_disease_diseaseclassification_and_more.py +166 -166
- endoreg_db/migrations/0027_labvalue_abbreviation_labvalue_default_normal_range_and_more.py +38 -38
- endoreg_db/migrations/0028_alter_unit_abbreviation.py +18 -18
- endoreg_db/migrations/0029_medicationintaketime_and_more.py +75 -75
- endoreg_db/migrations/0030_medicationindicationtype_and_more.py +101 -101
- endoreg_db/migrations/0031_rename_adapt_to_liver_function_medication_adapt_to_age_and_more.py +38 -38
- endoreg_db/migrations/0032_alter_medicationschedule_therapy_duration_d.py +18 -18
- endoreg_db/migrations/0033_medicationindication_sources.py +18 -18
- endoreg_db/migrations/0034_alter_rawpdffile_file.py +20 -20
- endoreg_db/migrations/0035_alter_medicationindication_sources.py +18 -18
- endoreg_db/migrations/0036_alter_rawpdffile_file.py +20 -20
- endoreg_db/migrations/0037_alter_medicationindication_sources.py +18 -18
- endoreg_db/migrations/0038_emissionfactor_material_product_productgroup_and_more.py +164 -164
- endoreg_db/migrations/0039_referenceproduct_name.py +19 -19
- endoreg_db/migrations/0040_quizanswertype_quizquestiontype_quizquestion_and_more.py +50 -50
- endoreg_db/migrations/0041_gender_patientmedication_medication_indication_and_more.py +40 -40
- endoreg_db/migrations/0042_casetemplateruletype_casetemplaterulevalue_and_more.py +74 -74
- endoreg_db/migrations/0043_casetemplatetype_name_de_casetemplatetype_name_en.py +23 -23
- endoreg_db/migrations/0044_casetemplateruletype_name_de_and_more.py +23 -23
- endoreg_db/migrations/0045_casetemplaterulevalue_value_type.py +19 -19
- endoreg_db/migrations/0046_casetemplaterulevalue_target_field.py +18 -18
- endoreg_db/migrations/0047_casetemplaterule_target_model.py +18 -18
- endoreg_db/migrations/0048_remove_casetemplaterule_chained_rules_and_more.py +22 -22
- endoreg_db/migrations/0049_remove_casetemplaterule_rule_values.py +17 -17
- endoreg_db/migrations/0050_casetemplaterule_rule_values.py +18 -18
- endoreg_db/migrations/0051_remove_casetemplaterule_calling_rules_and_more.py +27 -27
- endoreg_db/migrations/0052_rename_case_template_type_casetemplate_template_type.py +18 -18
- endoreg_db/migrations/0053_patientlabsampletype_patientlabsample_and_more.py +38 -38
- endoreg_db/migrations/0054_multiplecategoricalvaluedistribution_and_more.py +69 -69
- endoreg_db/migrations/0055_remove_casetemplaterule_rule_values_and_more.py +59 -59
- endoreg_db/migrations/0056_datevaluedistribution_and_more.py +32 -32
- endoreg_db/migrations/0057_remove_datevaluedistribution_max_date_and_more.py +72 -72
- endoreg_db/migrations/0058_datevaluedistribution_description_and_more.py +28 -28
- endoreg_db/migrations/0059_casetemplaterule_rule_values.py +18 -18
- endoreg_db/migrations/0060_labvalue__default_date_value_distribution_and_more.py +44 -44
- endoreg_db/migrations/0061_remove_patientlabvalue_date_patientlabvalue_datetime.py +24 -24
- endoreg_db/migrations/0062_labvalue_numeric_precision.py +18 -18
- endoreg_db/migrations/0063_alter_labvalue_numeric_precision.py +18 -18
- endoreg_db/migrations/0064_casetemplaterule_extra_parameters_and_more.py +23 -23
- endoreg_db/migrations/0065_rename__date_value_distribution_casetemplaterule_date_value_distribution_and_more.py +58 -58
- endoreg_db/migrations/0066_alter_patientlabvalue_patient_and_more.py +29 -29
- endoreg_db/migrations/0067_alter_medicationindication_indication_type.py +19 -19
- endoreg_db/models/__init__.py +75 -74
- endoreg_db/models/ai_model/__init__.py +3 -3
- endoreg_db/models/ai_model/active_model.py +9 -9
- endoreg_db/models/ai_model/model_meta.py +24 -24
- endoreg_db/models/ai_model/model_type.py +25 -25
- endoreg_db/models/ai_model/utils.py +8 -8
- endoreg_db/models/annotation/__init__.py +1 -1
- endoreg_db/models/annotation/binary_classification_annotation_task.py +80 -80
- endoreg_db/models/annotation/image_classification.py +26 -26
- endoreg_db/models/case_template/__init__.py +5 -5
- endoreg_db/models/case_template/case_template.py +81 -81
- endoreg_db/models/case_template/case_template_rule.py +276 -276
- endoreg_db/models/case_template/case_template_rule_value.py +73 -73
- endoreg_db/models/case_template/case_template_type.py +27 -27
- endoreg_db/models/center/__init__.py +4 -4
- endoreg_db/models/center/center.py +24 -24
- endoreg_db/models/center/center_product.py +33 -33
- endoreg_db/models/center/center_resource.py +18 -18
- endoreg_db/models/center/center_waste.py +10 -10
- endoreg_db/models/data_file/__init__.py +5 -5
- endoreg_db/models/data_file/base_classes/__init__.py +2 -2
- endoreg_db/models/data_file/base_classes/abstract_frame.py +50 -50
- endoreg_db/models/data_file/base_classes/abstract_video.py +200 -200
- endoreg_db/models/data_file/frame.py +45 -45
- endoreg_db/models/data_file/import_classes/__init__.py +31 -31
- endoreg_db/models/data_file/import_classes/processing_functions/__init__.py +34 -34
- endoreg_db/models/data_file/import_classes/processing_functions/pdf.py +28 -28
- endoreg_db/models/data_file/import_classes/processing_functions/video.py +260 -260
- endoreg_db/models/data_file/import_classes/raw_pdf.py +188 -188
- endoreg_db/models/data_file/import_classes/raw_video.py +343 -343
- endoreg_db/models/data_file/metadata/__init__.py +3 -3
- endoreg_db/models/data_file/metadata/pdf_meta.py +70 -70
- endoreg_db/models/data_file/metadata/sensitive_meta.py +31 -31
- endoreg_db/models/data_file/metadata/video_meta.py +132 -132
- endoreg_db/models/data_file/report_file.py +89 -89
- endoreg_db/models/data_file/video/__init__.py +6 -6
- endoreg_db/models/data_file/video/import_meta.py +25 -25
- endoreg_db/models/data_file/video/video.py +25 -25
- endoreg_db/models/data_file/video_segment.py +107 -107
- endoreg_db/models/disease.py +55 -55
- endoreg_db/models/emission/emission_factor.py +19 -19
- endoreg_db/models/event.py +21 -21
- endoreg_db/models/examination/__init__.py +3 -3
- endoreg_db/models/examination/examination.py +26 -26
- endoreg_db/models/examination/examination_time.py +27 -27
- endoreg_db/models/examination/examination_time_type.py +24 -24
- endoreg_db/models/examination/examination_type.py +18 -18
- endoreg_db/models/hardware/__init__.py +1 -1
- endoreg_db/models/hardware/endoscope.py +44 -44
- endoreg_db/models/hardware/endoscopy_processor.py +143 -143
- endoreg_db/models/information_source.py +29 -29
- endoreg_db/models/label/label.py +84 -84
- endoreg_db/models/laboratory/lab_value.py +102 -102
- endoreg_db/models/legacy_data/__init__.py +3 -3
- endoreg_db/models/legacy_data/image.py +34 -34
- endoreg_db/models/medication/medication.py +148 -148
- endoreg_db/models/network/__init__.py +2 -0
- endoreg_db/models/network/network_device.py +27 -0
- endoreg_db/models/network/network_device_type.py +23 -0
- endoreg_db/models/other/__init__.py +4 -4
- endoreg_db/models/other/distribution.py +215 -215
- endoreg_db/models/other/material.py +16 -16
- endoreg_db/models/other/resource.py +17 -17
- endoreg_db/models/other/transport_route.py +20 -20
- endoreg_db/models/other/waste.py +20 -20
- endoreg_db/models/patient_examination/__init__.py +35 -35
- endoreg_db/models/permissions/__init__.py +44 -44
- endoreg_db/models/persons/__init__.py +6 -6
- endoreg_db/models/persons/examiner/__init__.py +1 -1
- endoreg_db/models/persons/examiner/examiner.py +15 -15
- endoreg_db/models/persons/examiner/examiner_type.py +1 -1
- endoreg_db/models/persons/first_name.py +17 -17
- endoreg_db/models/persons/gender.py +22 -22
- endoreg_db/models/persons/last_name.py +19 -19
- endoreg_db/models/persons/patient/__init__.py +7 -7
- endoreg_db/models/persons/patient/case/case.py +30 -30
- endoreg_db/models/persons/patient/patient.py +216 -216
- endoreg_db/models/persons/patient/patient_disease.py +16 -16
- endoreg_db/models/persons/patient/patient_event.py +22 -22
- endoreg_db/models/persons/patient/patient_lab_sample.py +106 -106
- endoreg_db/models/persons/patient/patient_lab_value.py +176 -176
- endoreg_db/models/persons/patient/patient_medication.py +43 -43
- endoreg_db/models/persons/patient/patient_medication_schedule.py +27 -27
- endoreg_db/models/persons/person.py +31 -31
- endoreg_db/models/persons/portal_user_information.py +27 -27
- endoreg_db/models/prediction/__init__.py +1 -1
- endoreg_db/models/prediction/image_classification.py +37 -37
- endoreg_db/models/prediction/video_prediction_meta.py +244 -244
- endoreg_db/models/product/__init__.py +4 -4
- endoreg_db/models/product/product.py +97 -97
- endoreg_db/models/product/product_group.py +19 -19
- endoreg_db/models/product/product_material.py +24 -24
- endoreg_db/models/product/product_weight.py +26 -26
- endoreg_db/models/product/reference_product.py +99 -99
- endoreg_db/models/questionnaires/__init__.py +114 -114
- endoreg_db/models/quiz/__init__.py +1 -1
- endoreg_db/models/quiz/quiz_answer.py +41 -41
- endoreg_db/models/quiz/quiz_question.py +54 -54
- endoreg_db/models/report_reader/__init__.py +1 -1
- endoreg_db/models/report_reader/report_reader_config.py +53 -53
- endoreg_db/models/report_reader/report_reader_flag.py +19 -19
- endoreg_db/models/rules/__init__.py +4 -4
- endoreg_db/models/rules/rule.py +23 -23
- endoreg_db/models/rules/rule_applicator.py +224 -224
- endoreg_db/models/rules/rule_attribute_dtype.py +18 -18
- endoreg_db/models/rules/rule_type.py +21 -21
- endoreg_db/models/rules/ruleset.py +19 -19
- endoreg_db/models/unit.py +21 -21
- endoreg_db/queries/__init__.py +4 -4
- endoreg_db/queries/annotations/__init__.py +2 -2
- endoreg_db/queries/annotations/legacy.py +159 -159
- endoreg_db/queries/get/__init__.py +5 -5
- endoreg_db/queries/get/center.py +42 -42
- endoreg_db/queries/get/model.py +13 -13
- endoreg_db/queries/get/patient.py +14 -14
- endoreg_db/queries/get/patient_examination.py +20 -20
- endoreg_db/queries/get/report_file.py +33 -33
- endoreg_db/queries/get/video.py +31 -31
- endoreg_db/serializers/__init__.py +9 -9
- endoreg_db/serializers/ai_model.py +18 -18
- endoreg_db/serializers/annotation.py +17 -17
- endoreg_db/serializers/center.py +11 -11
- endoreg_db/serializers/examination.py +32 -32
- endoreg_db/serializers/frame.py +13 -13
- endoreg_db/serializers/hardware.py +20 -20
- endoreg_db/serializers/label.py +22 -22
- endoreg_db/serializers/patient.py +10 -10
- endoreg_db/serializers/prediction.py +15 -15
- endoreg_db/serializers/report_file.py +7 -7
- endoreg_db/serializers/video.py +27 -27
- endoreg_db/tests.py +3 -3
- endoreg_db/utils/cropping.py +28 -28
- endoreg_db/utils/dataloader.py +92 -92
- endoreg_db/utils/file_operations.py +30 -30
- endoreg_db/utils/hashs.py +33 -33
- endoreg_db/utils/legacy_ocr.py +201 -201
- endoreg_db/utils/ocr.py +197 -197
- endoreg_db/utils/uuid.py +4 -4
- endoreg_db/utils/video_metadata.py +87 -87
- endoreg_db/views.py +3 -3
- {endoreg_db-0.3.6.dist-info → endoreg_db-0.3.7.dist-info}/LICENSE +674 -674
- {endoreg_db-0.3.6.dist-info → endoreg_db-0.3.7.dist-info}/METADATA +2 -2
- endoreg_db-0.3.7.dist-info/RECORD +363 -0
- {endoreg_db-0.3.6.dist-info → endoreg_db-0.3.7.dist-info}/WHEEL +1 -1
- endoreg_db-0.3.6.dist-info/RECORD +0 -357
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
from .ai_model import *
|
|
2
|
-
from .annotation import *
|
|
3
|
-
from .center import *
|
|
4
|
-
from .examination import *
|
|
5
|
-
from .frame import *
|
|
6
|
-
from .hardware import *
|
|
7
|
-
from .label import *
|
|
8
|
-
from .patient import *
|
|
9
|
-
from .report_file import *
|
|
1
|
+
from .ai_model import *
|
|
2
|
+
from .annotation import *
|
|
3
|
+
from .center import *
|
|
4
|
+
from .examination import *
|
|
5
|
+
from .frame import *
|
|
6
|
+
from .hardware import *
|
|
7
|
+
from .label import *
|
|
8
|
+
from .patient import *
|
|
9
|
+
from .report_file import *
|
|
10
10
|
from .video import *
|
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
from endoreg_db.models import ModelMeta, ModelType, ActiveModel
|
|
2
|
-
from rest_framework import serializers
|
|
3
|
-
|
|
4
|
-
class ModelMetaSerializer(serializers.ModelSerializer):
|
|
5
|
-
weights = serializers.FileField(use_url=True) # use_url=True will provide the file's URI
|
|
6
|
-
|
|
7
|
-
class Meta:
|
|
8
|
-
model = ModelMeta
|
|
9
|
-
fields = '__all__'
|
|
10
|
-
|
|
11
|
-
class ModelTypeSerializer(serializers.ModelSerializer):
|
|
12
|
-
class Meta:
|
|
13
|
-
model = ModelType
|
|
14
|
-
fields = '__all__'
|
|
15
|
-
|
|
16
|
-
class ActiveModelSerializer(serializers.ModelSerializer):
|
|
17
|
-
class Meta:
|
|
18
|
-
model = ActiveModel
|
|
1
|
+
from endoreg_db.models import ModelMeta, ModelType, ActiveModel
|
|
2
|
+
from rest_framework import serializers
|
|
3
|
+
|
|
4
|
+
class ModelMetaSerializer(serializers.ModelSerializer):
|
|
5
|
+
weights = serializers.FileField(use_url=True) # use_url=True will provide the file's URI
|
|
6
|
+
|
|
7
|
+
class Meta:
|
|
8
|
+
model = ModelMeta
|
|
9
|
+
fields = '__all__'
|
|
10
|
+
|
|
11
|
+
class ModelTypeSerializer(serializers.ModelSerializer):
|
|
12
|
+
class Meta:
|
|
13
|
+
model = ModelType
|
|
14
|
+
fields = '__all__'
|
|
15
|
+
|
|
16
|
+
class ActiveModelSerializer(serializers.ModelSerializer):
|
|
17
|
+
class Meta:
|
|
18
|
+
model = ActiveModel
|
|
19
19
|
fields = '__all__'
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
from rest_framework import serializers
|
|
2
|
-
from endoreg_db.models import LegacyBinaryClassificationAnnotationTask, BinaryClassificationAnnotationTask, ImageClassificationAnnotation
|
|
3
|
-
|
|
4
|
-
class LegacyBinaryClassificationAnnotationTaskSerializer(serializers.ModelSerializer):
|
|
5
|
-
class Meta:
|
|
6
|
-
model = LegacyBinaryClassificationAnnotationTask
|
|
7
|
-
fields = '__all__'
|
|
8
|
-
|
|
9
|
-
class BinaryClassificationAnnotationTaskSerializer(serializers.ModelSerializer):
|
|
10
|
-
class Meta:
|
|
11
|
-
model = BinaryClassificationAnnotationTask
|
|
12
|
-
fields = '__all__'
|
|
13
|
-
|
|
14
|
-
class ImageClassificationAnnotationSerializer(serializers.ModelSerializer):
|
|
15
|
-
class Meta:
|
|
16
|
-
model = ImageClassificationAnnotation
|
|
17
|
-
fields = '__all__'
|
|
1
|
+
from rest_framework import serializers
|
|
2
|
+
from endoreg_db.models import LegacyBinaryClassificationAnnotationTask, BinaryClassificationAnnotationTask, ImageClassificationAnnotation
|
|
3
|
+
|
|
4
|
+
class LegacyBinaryClassificationAnnotationTaskSerializer(serializers.ModelSerializer):
|
|
5
|
+
class Meta:
|
|
6
|
+
model = LegacyBinaryClassificationAnnotationTask
|
|
7
|
+
fields = '__all__'
|
|
8
|
+
|
|
9
|
+
class BinaryClassificationAnnotationTaskSerializer(serializers.ModelSerializer):
|
|
10
|
+
class Meta:
|
|
11
|
+
model = BinaryClassificationAnnotationTask
|
|
12
|
+
fields = '__all__'
|
|
13
|
+
|
|
14
|
+
class ImageClassificationAnnotationSerializer(serializers.ModelSerializer):
|
|
15
|
+
class Meta:
|
|
16
|
+
model = ImageClassificationAnnotation
|
|
17
|
+
fields = '__all__'
|
endoreg_db/serializers/center.py
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
from rest_framework import serializers
|
|
2
|
-
from endoreg_db.models import (
|
|
3
|
-
Center,
|
|
4
|
-
)
|
|
5
|
-
|
|
6
|
-
class CenterSerializer(serializers.ModelSerializer):
|
|
7
|
-
class Meta:
|
|
8
|
-
model = Center
|
|
9
|
-
fields = '__all__'
|
|
10
|
-
|
|
11
|
-
|
|
1
|
+
from rest_framework import serializers
|
|
2
|
+
from endoreg_db.models import (
|
|
3
|
+
Center,
|
|
4
|
+
)
|
|
5
|
+
|
|
6
|
+
class CenterSerializer(serializers.ModelSerializer):
|
|
7
|
+
class Meta:
|
|
8
|
+
model = Center
|
|
9
|
+
fields = '__all__'
|
|
10
|
+
|
|
11
|
+
|
|
@@ -1,33 +1,33 @@
|
|
|
1
|
-
from rest_framework import serializers
|
|
2
|
-
from endoreg_db.models import (
|
|
3
|
-
Examination,
|
|
4
|
-
ExaminationTimeType,
|
|
5
|
-
ExaminationTime,
|
|
6
|
-
ExaminationType,
|
|
7
|
-
PatientExamination
|
|
8
|
-
)
|
|
9
|
-
|
|
10
|
-
class ExaminationTimeTypeSerializer(serializers.ModelSerializer):
|
|
11
|
-
class Meta:
|
|
12
|
-
model = ExaminationTimeType
|
|
13
|
-
fields = '__all__'
|
|
14
|
-
|
|
15
|
-
class ExaminationTimeSerializer(serializers.ModelSerializer):
|
|
16
|
-
class Meta:
|
|
17
|
-
model = ExaminationTime
|
|
18
|
-
fields = '__all__'
|
|
19
|
-
|
|
20
|
-
class ExaminationTypeSerializer(serializers.ModelSerializer):
|
|
21
|
-
class Meta:
|
|
22
|
-
model = ExaminationType
|
|
23
|
-
fields = '__all__'
|
|
24
|
-
|
|
25
|
-
class ExaminationSerializer(serializers.ModelSerializer):
|
|
26
|
-
class Meta:
|
|
27
|
-
model = Examination
|
|
28
|
-
fields = '__all__'
|
|
29
|
-
|
|
30
|
-
class PatientExaminationSerializer(serializers.ModelSerializer):
|
|
31
|
-
class Meta:
|
|
32
|
-
model = PatientExamination
|
|
1
|
+
from rest_framework import serializers
|
|
2
|
+
from endoreg_db.models import (
|
|
3
|
+
Examination,
|
|
4
|
+
ExaminationTimeType,
|
|
5
|
+
ExaminationTime,
|
|
6
|
+
ExaminationType,
|
|
7
|
+
PatientExamination
|
|
8
|
+
)
|
|
9
|
+
|
|
10
|
+
class ExaminationTimeTypeSerializer(serializers.ModelSerializer):
|
|
11
|
+
class Meta:
|
|
12
|
+
model = ExaminationTimeType
|
|
13
|
+
fields = '__all__'
|
|
14
|
+
|
|
15
|
+
class ExaminationTimeSerializer(serializers.ModelSerializer):
|
|
16
|
+
class Meta:
|
|
17
|
+
model = ExaminationTime
|
|
18
|
+
fields = '__all__'
|
|
19
|
+
|
|
20
|
+
class ExaminationTypeSerializer(serializers.ModelSerializer):
|
|
21
|
+
class Meta:
|
|
22
|
+
model = ExaminationType
|
|
23
|
+
fields = '__all__'
|
|
24
|
+
|
|
25
|
+
class ExaminationSerializer(serializers.ModelSerializer):
|
|
26
|
+
class Meta:
|
|
27
|
+
model = Examination
|
|
28
|
+
fields = '__all__'
|
|
29
|
+
|
|
30
|
+
class PatientExaminationSerializer(serializers.ModelSerializer):
|
|
31
|
+
class Meta:
|
|
32
|
+
model = PatientExamination
|
|
33
33
|
fields = '__all__'
|
endoreg_db/serializers/frame.py
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
from rest_framework import serializers
|
|
2
|
-
from endoreg_db.models import Frame, LegacyFrame
|
|
3
|
-
|
|
4
|
-
class FrameSerializer(serializers.ModelSerializer):
|
|
5
|
-
class Meta:
|
|
6
|
-
model = Frame
|
|
7
|
-
fields = '__all__'
|
|
8
|
-
|
|
9
|
-
class LegacyFrameSerializer(serializers.ModelSerializer):
|
|
10
|
-
class Meta:
|
|
11
|
-
model = LegacyFrame
|
|
12
|
-
fields = '__all__'
|
|
13
|
-
|
|
1
|
+
from rest_framework import serializers
|
|
2
|
+
from endoreg_db.models import Frame, LegacyFrame
|
|
3
|
+
|
|
4
|
+
class FrameSerializer(serializers.ModelSerializer):
|
|
5
|
+
class Meta:
|
|
6
|
+
model = Frame
|
|
7
|
+
fields = '__all__'
|
|
8
|
+
|
|
9
|
+
class LegacyFrameSerializer(serializers.ModelSerializer):
|
|
10
|
+
class Meta:
|
|
11
|
+
model = LegacyFrame
|
|
12
|
+
fields = '__all__'
|
|
13
|
+
|
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
from rest_framework import serializers
|
|
2
|
-
from endoreg_db.models import (
|
|
3
|
-
Endoscope,
|
|
4
|
-
EndoscopeType,
|
|
5
|
-
EndoscopyProcessor,
|
|
6
|
-
)
|
|
7
|
-
|
|
8
|
-
class EndoscopeSerializer(serializers.ModelSerializer):
|
|
9
|
-
class Meta:
|
|
10
|
-
model = Endoscope
|
|
11
|
-
fields = '__all__'
|
|
12
|
-
|
|
13
|
-
class EndoscopyProcessorSerializer(serializers.ModelSerializer):
|
|
14
|
-
class Meta:
|
|
15
|
-
model = EndoscopyProcessor
|
|
16
|
-
fields = '__all__'
|
|
17
|
-
|
|
18
|
-
class EndoscopeTypeSerializer(serializers.ModelSerializer):
|
|
19
|
-
class Meta:
|
|
20
|
-
model = EndoscopeType
|
|
1
|
+
from rest_framework import serializers
|
|
2
|
+
from endoreg_db.models import (
|
|
3
|
+
Endoscope,
|
|
4
|
+
EndoscopeType,
|
|
5
|
+
EndoscopyProcessor,
|
|
6
|
+
)
|
|
7
|
+
|
|
8
|
+
class EndoscopeSerializer(serializers.ModelSerializer):
|
|
9
|
+
class Meta:
|
|
10
|
+
model = Endoscope
|
|
11
|
+
fields = '__all__'
|
|
12
|
+
|
|
13
|
+
class EndoscopyProcessorSerializer(serializers.ModelSerializer):
|
|
14
|
+
class Meta:
|
|
15
|
+
model = EndoscopyProcessor
|
|
16
|
+
fields = '__all__'
|
|
17
|
+
|
|
18
|
+
class EndoscopeTypeSerializer(serializers.ModelSerializer):
|
|
19
|
+
class Meta:
|
|
20
|
+
model = EndoscopeType
|
|
21
21
|
fields = '__all__'
|
endoreg_db/serializers/label.py
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
|
-
from rest_framework import serializers
|
|
2
|
-
from endoreg_db.models import (
|
|
3
|
-
Label,
|
|
4
|
-
LabelSet,
|
|
5
|
-
LabelType,
|
|
6
|
-
)
|
|
7
|
-
|
|
8
|
-
class LabelTypeSerializer(serializers.ModelSerializer):
|
|
9
|
-
class Meta:
|
|
10
|
-
model = LabelType
|
|
11
|
-
fields = '__all__'
|
|
12
|
-
|
|
13
|
-
class LabelSetSerializer(serializers.ModelSerializer):
|
|
14
|
-
class Meta:
|
|
15
|
-
model = LabelSet
|
|
16
|
-
fields = '__all__'
|
|
17
|
-
|
|
18
|
-
class LabelSerializer(serializers.ModelSerializer):
|
|
19
|
-
class Meta:
|
|
20
|
-
model = Label
|
|
21
|
-
fields = '__all__'
|
|
22
|
-
|
|
1
|
+
from rest_framework import serializers
|
|
2
|
+
from endoreg_db.models import (
|
|
3
|
+
Label,
|
|
4
|
+
LabelSet,
|
|
5
|
+
LabelType,
|
|
6
|
+
)
|
|
7
|
+
|
|
8
|
+
class LabelTypeSerializer(serializers.ModelSerializer):
|
|
9
|
+
class Meta:
|
|
10
|
+
model = LabelType
|
|
11
|
+
fields = '__all__'
|
|
12
|
+
|
|
13
|
+
class LabelSetSerializer(serializers.ModelSerializer):
|
|
14
|
+
class Meta:
|
|
15
|
+
model = LabelSet
|
|
16
|
+
fields = '__all__'
|
|
17
|
+
|
|
18
|
+
class LabelSerializer(serializers.ModelSerializer):
|
|
19
|
+
class Meta:
|
|
20
|
+
model = Label
|
|
21
|
+
fields = '__all__'
|
|
22
|
+
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
from rest_framework import serializers
|
|
2
|
-
from endoreg_db.models import (
|
|
3
|
-
Patient,
|
|
4
|
-
)
|
|
5
|
-
|
|
6
|
-
class PatientSerializer(serializers.ModelSerializer):
|
|
7
|
-
class Meta:
|
|
8
|
-
model = Patient
|
|
9
|
-
fields = '__all__'
|
|
10
|
-
|
|
1
|
+
from rest_framework import serializers
|
|
2
|
+
from endoreg_db.models import (
|
|
3
|
+
Patient,
|
|
4
|
+
)
|
|
5
|
+
|
|
6
|
+
class PatientSerializer(serializers.ModelSerializer):
|
|
7
|
+
class Meta:
|
|
8
|
+
model = Patient
|
|
9
|
+
fields = '__all__'
|
|
10
|
+
|
|
@@ -1,15 +1,15 @@
|
|
|
1
|
-
from rest_framework import serializers
|
|
2
|
-
from endoreg_db.models import (
|
|
3
|
-
ImageClassificationPrediction,
|
|
4
|
-
LegacyVideoPredictionMeta
|
|
5
|
-
)
|
|
6
|
-
|
|
7
|
-
class ImageClassificationPredictionSerializer(serializers.ModelSerializer):
|
|
8
|
-
class Meta:
|
|
9
|
-
model = ImageClassificationPrediction
|
|
10
|
-
fields = '__all__'
|
|
11
|
-
|
|
12
|
-
class LegacyVideoPredictionMetaSerializer(serializers.ModelSerializer):
|
|
13
|
-
class Meta:
|
|
14
|
-
model = LegacyVideoPredictionMeta
|
|
15
|
-
fields = '__all__'
|
|
1
|
+
from rest_framework import serializers
|
|
2
|
+
from endoreg_db.models import (
|
|
3
|
+
ImageClassificationPrediction,
|
|
4
|
+
LegacyVideoPredictionMeta
|
|
5
|
+
)
|
|
6
|
+
|
|
7
|
+
class ImageClassificationPredictionSerializer(serializers.ModelSerializer):
|
|
8
|
+
class Meta:
|
|
9
|
+
model = ImageClassificationPrediction
|
|
10
|
+
fields = '__all__'
|
|
11
|
+
|
|
12
|
+
class LegacyVideoPredictionMetaSerializer(serializers.ModelSerializer):
|
|
13
|
+
class Meta:
|
|
14
|
+
model = LegacyVideoPredictionMeta
|
|
15
|
+
fields = '__all__'
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
from rest_framework import serializers
|
|
2
|
-
from endoreg_db.models import ReportFile
|
|
3
|
-
|
|
4
|
-
class ReportFileSerializer(serializers.ModelSerializer):
|
|
5
|
-
class Meta:
|
|
6
|
-
model = ReportFile
|
|
7
|
-
fields = '__all__'
|
|
1
|
+
from rest_framework import serializers
|
|
2
|
+
from endoreg_db.models import ReportFile
|
|
3
|
+
|
|
4
|
+
class ReportFileSerializer(serializers.ModelSerializer):
|
|
5
|
+
class Meta:
|
|
6
|
+
model = ReportFile
|
|
7
|
+
fields = '__all__'
|
endoreg_db/serializers/video.py
CHANGED
|
@@ -1,27 +1,27 @@
|
|
|
1
|
-
from rest_framework import serializers
|
|
2
|
-
from endoreg_db.models import Video, LegacyVideo, VideoImportMeta, LegacyLabelVideoSegment, LabelVideoSegment
|
|
3
|
-
|
|
4
|
-
class VideoSerializer(serializers.ModelSerializer):
|
|
5
|
-
class Meta:
|
|
6
|
-
model = Video
|
|
7
|
-
fields = '__all__'
|
|
8
|
-
|
|
9
|
-
class LegacyVideoSerializer(serializers.ModelSerializer):
|
|
10
|
-
class Meta:
|
|
11
|
-
model = LegacyVideo
|
|
12
|
-
fields = '__all__'
|
|
13
|
-
|
|
14
|
-
class VideoImportMetaSerializer(serializers.ModelSerializer):
|
|
15
|
-
class Meta:
|
|
16
|
-
model = VideoImportMeta
|
|
17
|
-
fields = '__all__'
|
|
18
|
-
|
|
19
|
-
class LabelVideoSegmentSerializer(serializers.ModelSerializer):
|
|
20
|
-
class Meta:
|
|
21
|
-
model = LabelVideoSegment
|
|
22
|
-
fields = '__all__'
|
|
23
|
-
|
|
24
|
-
class LegacyLabelVideoSegmentSerializer(serializers.ModelSerializer):
|
|
25
|
-
class Meta:
|
|
26
|
-
model = LegacyLabelVideoSegment
|
|
27
|
-
fields = '__all__'
|
|
1
|
+
from rest_framework import serializers
|
|
2
|
+
from endoreg_db.models import Video, LegacyVideo, VideoImportMeta, LegacyLabelVideoSegment, LabelVideoSegment
|
|
3
|
+
|
|
4
|
+
class VideoSerializer(serializers.ModelSerializer):
|
|
5
|
+
class Meta:
|
|
6
|
+
model = Video
|
|
7
|
+
fields = '__all__'
|
|
8
|
+
|
|
9
|
+
class LegacyVideoSerializer(serializers.ModelSerializer):
|
|
10
|
+
class Meta:
|
|
11
|
+
model = LegacyVideo
|
|
12
|
+
fields = '__all__'
|
|
13
|
+
|
|
14
|
+
class VideoImportMetaSerializer(serializers.ModelSerializer):
|
|
15
|
+
class Meta:
|
|
16
|
+
model = VideoImportMeta
|
|
17
|
+
fields = '__all__'
|
|
18
|
+
|
|
19
|
+
class LabelVideoSegmentSerializer(serializers.ModelSerializer):
|
|
20
|
+
class Meta:
|
|
21
|
+
model = LabelVideoSegment
|
|
22
|
+
fields = '__all__'
|
|
23
|
+
|
|
24
|
+
class LegacyLabelVideoSegmentSerializer(serializers.ModelSerializer):
|
|
25
|
+
class Meta:
|
|
26
|
+
model = LegacyLabelVideoSegment
|
|
27
|
+
fields = '__all__'
|
endoreg_db/tests.py
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
from django.test import TestCase
|
|
2
|
-
|
|
3
|
-
# Create your tests here.
|
|
1
|
+
from django.test import TestCase
|
|
2
|
+
|
|
3
|
+
# Create your tests here.
|
endoreg_db/utils/cropping.py
CHANGED
|
@@ -1,29 +1,29 @@
|
|
|
1
|
-
from PIL import Image
|
|
2
|
-
|
|
3
|
-
def crop_and_insert(image:Image, x, y, h, w, bg_color=(255, 255, 255)):
|
|
4
|
-
"""
|
|
5
|
-
Crops a region from an inverted grayscale image and inserts it into a white image of the same size as the original.
|
|
6
|
-
|
|
7
|
-
Parameters:
|
|
8
|
-
- fp: File path or a file object of the original image.
|
|
9
|
-
- x, y: The top-left coordinates of the rectangle to be cropped.
|
|
10
|
-
- h, w: The height and width of the rectangle to be cropped.
|
|
11
|
-
|
|
12
|
-
Returns:
|
|
13
|
-
A PIL Image object containing the original image with the specified region replaced.
|
|
14
|
-
"""
|
|
15
|
-
# Load the original image
|
|
16
|
-
original_image = image
|
|
17
|
-
|
|
18
|
-
# Crop the specified region from the inverted image
|
|
19
|
-
crop_rectangle = (x, y, x + w, y + h)
|
|
20
|
-
cropped_content = original_image.crop(crop_rectangle)
|
|
21
|
-
|
|
22
|
-
# Create a new white image of the same size as the original image
|
|
23
|
-
white_background = Image.new('RGB', original_image.size, bg_color)
|
|
24
|
-
|
|
25
|
-
# Paste the cropped content onto the white image at the specified location
|
|
26
|
-
white_background.paste(cropped_content, (x, y))
|
|
27
|
-
|
|
28
|
-
# The final image can be displayed or saved as needed
|
|
1
|
+
from PIL import Image
|
|
2
|
+
|
|
3
|
+
def crop_and_insert(image:Image, x, y, h, w, bg_color=(255, 255, 255)):
|
|
4
|
+
"""
|
|
5
|
+
Crops a region from an inverted grayscale image and inserts it into a white image of the same size as the original.
|
|
6
|
+
|
|
7
|
+
Parameters:
|
|
8
|
+
- fp: File path or a file object of the original image.
|
|
9
|
+
- x, y: The top-left coordinates of the rectangle to be cropped.
|
|
10
|
+
- h, w: The height and width of the rectangle to be cropped.
|
|
11
|
+
|
|
12
|
+
Returns:
|
|
13
|
+
A PIL Image object containing the original image with the specified region replaced.
|
|
14
|
+
"""
|
|
15
|
+
# Load the original image
|
|
16
|
+
original_image = image
|
|
17
|
+
|
|
18
|
+
# Crop the specified region from the inverted image
|
|
19
|
+
crop_rectangle = (x, y, x + w, y + h)
|
|
20
|
+
cropped_content = original_image.crop(crop_rectangle)
|
|
21
|
+
|
|
22
|
+
# Create a new white image of the same size as the original image
|
|
23
|
+
white_background = Image.new('RGB', original_image.size, bg_color)
|
|
24
|
+
|
|
25
|
+
# Paste the cropped content onto the white image at the specified location
|
|
26
|
+
white_background.paste(cropped_content, (x, y))
|
|
27
|
+
|
|
28
|
+
# The final image can be displayed or saved as needed
|
|
29
29
|
return white_background
|