Not logged in.  Login/Logout/Register | List snippets | | Create snippet | Upload image | Upload data

63
LINES

< > BotCompany Repo | #1031959 // IIVerticalSplit - IIntegralImage composed of 2 vertical parts (OK)

JavaX fragment (include) [tags: use-pretranspiled]

Libraryless. Click here for Pure Java version (4437L/25K).

sclass IIVerticalSplit extends Meta implements IIntegralImage {
  // y coordinate of split point
  int splitPoint; 
  
  // a and b must have same width
  
  // [0; splitPoint)
  RegisteredReference<IIntegralImage> a = new(this);
  
  // [splitPoint; height)
  RegisteredReference<IIntegralImage> b = new(this);
  
  *() {}
  *(IIntegralImage img, int splitPoint) {
    init(img, splitPoint);
  }
  
  void init(IIntegralImage img, int splitPoint) {
    this.splitPoint = splitPoint;
    int w = img.getWidth(), h = img.getHeight();
    a.set(img.clip(0, 0, w, splitPoint));
    b.set(img.clip(0, splitPoint, w, h-splitPoint));
  }
  
  *(IIntegralImage img) {
    int h = img.getHeight();
    if (h < 2) fail("Can't split image vertically - too small");
    init(img, h/2);
  }
  
  *(IIntegralImage img1, IIntegralImage img2) {
    a.set(img1);
    b.set(img2);
    splitPoint = img1.getHeight();
  }
  
  public int getWidth() { ret a->getWidth(); }
  public simplyCached int getHeight() { ret a->getHeight()+b->getHeight(); }

  public double getIntegralValue(int x, int y, int channel) {
    if (y < splitPoint)
      ret a->getIntegralValue(x, y, channel);
    else ret
      a->getIntegralValue(x, splitPoint, channel)
        + b->getIntegralValue(x, y-splitPoint, channel);
  }
    
  public double getIntegralValue(int x, int y) {
    if (y < splitPoint)
      ret a->getIntegralValue(x, y);
    else ret
      a->getIntegralValue(x, splitPoint)
        + b->getIntegralValue(x, y-splitPoint);
  }
  
  public BufferedImage getBufferedImage() {
    BufferedImage img = newBufferedImage(getWidth(), getHeight());
    var g = graphics(img);
    a->drawAt(g, 0, 0);
    b->drawAt(g, 0, splitPoint);
    ret img;
  }
}

Author comment

Began life as a copy of #1031958

download  show line numbers  debug dex  old transpilations   

Travelled to 3 computer(s): bhatertpkbcr, mqqgnosmbjvj, pyentgdyhuwx

No comments. add comment

Snippet ID: #1031959
Snippet name: IIVerticalSplit - IIntegralImage composed of 2 vertical parts (OK)
Eternal ID of this version: #1031959/8
Text MD5: 26e2b7fa8f11fe3d0e091147b172f7b8
Transpilation MD5: 79b53662631f88216a609f64ec003778
Author: stefan
Category: javax / image recognition
Type: JavaX fragment (include)
Public (visible to everyone): Yes
Archived (hidden from active list): No
Created/modified: 2021-08-17 13:49:14
Source code size: 1786 bytes / 63 lines
Pitched / IR pitched: No / No
Views / Downloads: 179 / 348
Version history: 7 change(s)
Referenced in: #1031964 - IIHorizontalSplit - IIntegralImage composed of 2 horizontal parts (OK)
#1034167 - Standard Classes + Interfaces (LIVE, continuation of #1003674)