python - 多处理和(熊猫数据框+图像处理)
问题描述
我有一个pandas
看起来像这样的数据框:
image_id category sub image_path
1000 A HH images/ID_1000.png
512 A HH images/ID_512.png
1002 C CC images/ID_1002.png
236 B XX images/ID_236.png
... ... ... .....
最终目标是什么?
- 按 对图像进行分组
category
。 阅读一个类别中的所有图像。转换它并使用
skimage
.将与图像出现的行对应的所有值复制到新的数据帧中,并
image_path
相应地更改为指向转换后的图像。- 因为数据框是拥抱的,所以我需要并行化这个过程。
简而言之,我想使用以下方法并行化此函数pool
:
def transform_and_save(df, to_generate=5000):
categories = {"A":0, "B":1, "C":2}
save_dir_path = "new_images/"
new_df = pd.DataFrame(columns=df.columns)
final_count=0
for cls in classes_to_aug.keys():
orig_images = df[df["category"]==cls].reset_index(drop=True)
orig_count = len(orig_images)
nb_images_to_gen = to_generate - orig_count
counter = 0
stop = False
while counter < nb_images_to_gen:
for i in range(len(orig_images)):
all_values = orig_images.loc[i]
img = Path(orig_images["image_path"][i])
img_name = img.name
save_name = save_dir_path + "newimg_" + str(counter) + img_name
img = imread(img)
img = resize(img, (200, 200))
imsave(fname=save_name, check_contrast=False, arr=img)
all_values["image_path"] = save_name
new_df.loc[final_count] = all_values
counter += 1
final_count += 1
if counter > nb_images_to_gen:
stop=True
break
if stop:
break
return new_df
解决方案
推荐阅读
- c# - ElasticSearch 不通过具有动态类的嵌套调用返回数据
- ios - 如何在 iOS 应用程序中阻止屏幕截图
- maven - 当我将打包设置为捆绑时,Maven 项目中的 PluginVersionResolutionException
- azure-devops - Azure DevOps Databricks Pipeline Release 退出并出现 [错误]Bash 退出并出现代码“1”
- javascript - 以角度填充数据下拉onclick表格行(基于表格行数据)
- mongodb - MongoDB Redash - FieldPath 字段名称可能不包含“。”
- sql - 在 Laravel 6 中使用 sql 查询统计每个部门的工人数
- ios - 在选项卡之间移动时如何保留推送视图?
- powershell - 如何通过 PowerShell 或 Graph API 在 Micosoft Teams 中设置成员设置“允许成员上传自定义应用程序”
- lstm - 带手套的 Bi-LSTM - 词形还原问题