easyidp.visualize.draw_polygon_on_img¶
- easyidp.visualize.draw_polygon_on_img(img_name, img_path, poly_coord, corrected_poly_coord=None, title=None, save_as=None, show=False, color='red', alpha=0.5, dpi=72)¶
在给定图像上绘制一个多边形。
- 参数:
img_name (str) -- 图像文件名
img_path (str) -- 图像的文件路径
poly_coord (np.ndarray) -- 图像上的2D多边形像素坐标
corrected_poly_coord (np.ndarray, optional) -- 图像上校正的2D多边形像素坐标(如果有),默认值为None
title (str, optional) -- 显示在顶部的图像标题,默认值为None ->
Projection on [img_name]save_as (str, optional) -- 保存输出图形的文件路径,默认值为None
show (bool, optional) -- 是否显示(在jupyter notebook中)或弹出(在命令行中)图形,默认值为False
color (str, optional) -- 多边形线条颜色,默认值为'红色'
alpha (float, optional) -- 多边形透明度,默认值为0.5
dpi (int, optional) -- 生成图形的dpi,默认值为72
示例
数据准备
>>> import easyidp as idp >>> p4d = idp.Pix4D( ... test_data.pix4d.lotus_folder, ... raw_img_folder=test_data.pix4d.lotus_photos, ... param_folder=test_data.pix4d.lotus_param ... ) >>> plot = np.array([ # N1E1 plot geo coordinate ... [ 368020.2974959 , 3955511.61264302, 97.56272272], ... [ 368022.24288365, 3955512.02973983, 97.56272272], ... [ 368022.65361232, 3955510.07798313, 97.56272272], ... [ 368020.69867274, 3955509.66725421, 97.56272272], ... [ 368020.2974959 , 3955511.61264302, 97.56272272] ... ])
然后进行反向投影,找到原始图像上的先前ROI位置。
>>> out_dict = p4d.back2raw_crs(plot, distort_correct=True) >>> out_dict["DJI_0177.JPG"] array([[ 137.10982937, 2359.55887614], [ 133.56116243, 2107.13954299], [ 384.767746 , 2097.05639105], [ 388.10993307, 2350.41225998], [ 137.10982937, 2359.55887614]])
使用此函数检查原始图像上的一个多边形
>>> img_name = "DJI_0198.JPG" >>> photo = p4d.photos[img_name] >>> idp.visualize.draw_polygon_on_img( ... img_name, photo.path, out_dict[img_name], ... save_as="p4d_back2raw_single_view.png")
它将得到如下图:
添加一个校正后的多边形(这里手动移动10个像素作为示例),并更改颜色和透明度信息:
>>> corrected_poly = out_dict[img_name] + np.array([10,10]) >>> idp.visualize.draw_polygon_on_img( ... img_name, photo.path, out_dict[img_name], corrected_poly, ... save_as="p4d_back2raw_single_view2.png", ... color='blue', alpha=0.3)
它将得到如下图: