{"metadata":{"kernelspec":{"language":"python","display_name":"Python 3","name":"python3"},"language_info":{"name":"python","version":"3.10.12","mimetype":"text/x-python","codemirror_mode":{"name":"ipython","version":3},"pygments_lexer":"ipython3","nbconvert_exporter":"python","file_extension":".py"},"kaggle":{"accelerator":"none","dataSources":[{"sourceId":39272,"databundleVersionId":4629629,"sourceType":"competition"}],"dockerImageVersionId":30626,"isInternetEnabled":true,"language":"python","sourceType":"notebook","isGpuEnabled":false}},"nbformat_minor":4,"nbformat":4,"cells":[{"cell_type":"code","source":"import pandas as pd\nimport numpy as np\n\ndef post_crop(df,center_ratio = 0.8):\n    # 计算x和y的短边，选择较小的那个值作为新的边长\n    df['short_edge'] = df[['ex', 'ey']].min(axis=1) - df[['sx', 'sy']].min(axis=1)\n    new_edge_length = df['short_edge']*center_ratio\n\n    # 计算中心点坐标\n    df['center_x'] = (df['sx'] + df['ex']) / 2\n    df['center_y'] = (df['sy'] + df['ey']) / 2\n\n    # 计算新的坐标点并四舍五入为整数\n    df['sx_new'] = np.round(df['center_x'] - new_edge_length / 2).astype(int)\n    df['ex_new'] = np.round(df['center_x'] + new_edge_length / 2).astype(int)\n    df['sy_new'] = np.round(df['center_y'] - new_edge_length / 2).astype(int)\n    df['ey_new'] = np.round(df['center_y'] + new_edge_length / 2).astype(int)\n    df['sx'] = df['sx_new']\n    df['ex'] = df['ex_new']\n    df['sy'] = df['sy_new']\n    df['ey'] = df['ey_new']\n    return df\n# 创建一个包含足够数据的示例DataFrame\ndata = {\n    'sx': [10, 20, 30],\n    'ex': [50, 60, 70],\n    'sy': [15, 25, 35],\n    'ey': [55, 65, 75],\n}\n\n# 创建DataFrame\ndf = pd.DataFrame(data)\n\n# 调用post_crop函数进行测试\nresult_df = post_crop(df,center_ratio = 0.8)\n\n# 打印结果\nprint(result_df)\n\n\n","metadata":{"_uuid":"8f2839f25d086af736a60e9eeb907d3b93b6e0e5","_cell_guid":"b1076dfc-b9ad-4769-8c92-a6c4dae69d19","execution":{"iopub.status.busy":"2024-01-02T04:59:49.300795Z","iopub.execute_input":"2024-01-02T04:59:49.301171Z","iopub.status.idle":"2024-01-02T04:59:49.330101Z","shell.execute_reply.started":"2024-01-02T04:59:49.301142Z","shell.execute_reply":"2024-01-02T04:59:49.32904Z"},"trusted":true},"execution_count":null,"outputs":[]}]}