class_docstr: Class for image processing. Methods for detecting lines in an image and clustering them. Helper methods for
  drawing.
docstr: Create a new image processing object for <imgfile>.
docstr_tok: ["Create","a","new","image","processing","object","for","<","imgfile",">","."]
code: def __init__(self, imgfile):
      """
      Create a new image processing object for <imgfile>.
      """
      if not imgfile:
          raise ValueError(
              "parameter 'imgfile' must be a non-empty, non-None string"
          )
  
      self.imgfile = imgfile
      self.input_img = None
      self.img_w = None
      self.img_h = None
  
      self.gray_img = None  # grayscale version of the input image
      self.edges = None  # edges detected by Canny algorithm
  
      self.lines_hough = (
          []
      )  # contains tuples (rho, theta, theta_norm, DIRECTION_HORIZONTAL or DIRECTION_VERTICAL)
  
      self._load_imgfile()
  
imports: from logging import warning
  from math import degrees
  import numpy
  import cv2
  from pdftabextract.common import ROTATION, SKEW_X, SKEW_Y, DIRECTION_HORIZONTAL, DIRECTION_VERTICAL
  from pdftabextract.geom import normalize_angle, project_polarcoord_lines
  from pdftabextract.clustering import zip_clusters_and_values, find_clusters_1d_break_dist, calc_cluster_centers_1d
label_desc: Use image node_id 1 to create a new ImageProc object  with example: obj = ImageProc(imgfile)