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")

它将得到如下图:

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)

它将得到如下图:

p4d_back2raw_single_view2.png'