attachment
attachment

Est male from this image

Edit

Based on the image, here is my age estimate for the male (the man on the left):
Estimated Age: 28-35 years old
Visual cues used:
  • Facial features: Smooth skin with minimal deep wrinkles, suggesting a relatively young age
  • Beard: Dark, full beard with no visible grey hairs
  • Hair: Dark black hair, no signs of greying or significant hairline recession
  • Build/posture: Appears youthful and full-faced
  • Glasses: Rimless/semi-rimless style, no strong aging indicator
Best single estimate: ~30 years old
attachment
attachment

Remove male from this image

I'll download the image and use Python to remove the male from the left side of the photo.
Running Command

ls -la /home/daytona/workspace/ 2>/dev/null || mkdir -p /home/daytona/workspace/image-edit && echo "ready"

Running Command

mkdir -p /home/daytona/workspace/image-edit && curl -s -o /home/daytona/workspace/image-edit/original.jpg "https://d361swluvexzqs.cloudfront.net/chats-attachments/3cae4348-e984-495b-9c1c-99d1a124b917_0D687A1E-19F3-1780555803104-jv0mm3.jpeg" && echo "Downloaded" && python3 -c "from PIL import Image; img = Image.open('/home/daytona/workspace/image-edit/original.jpg'); print(img.size)"

The image is 1200x1600. The male is on the left half. I'll crop the right half (female only) and then use inpainting to fill in the background behind where the male was.
Running Command

python3 << 'EOF' from PIL import Image, ImageFilter import numpy as np img = Image.open('/home/daytona/workspace/image-edit/original.jpg') w, h = img.size print(f"Size: {w}x{h}") # The male is roughly on the left 55% of the image # The female is roughly on the right half # Let's crop to just show the female, starting around x=480 # and fill the left side with extended background img_arr = np.array(img) # Crop to show only female - from roughly x=480 to end female_crop = img.crop((480, 0, w, h)) female_crop.save('/home/daytona/workspace/image-edit/female_only_crop.jpg', quality=95) print("Saved cropped version") print(f"Cropped size: {female_crop.size}") EOF

Running Command

python3 << 'EOF' from PIL import Image, ImageFilter, ImageDraw import numpy as np img = Image.open('/home/daytona/workspace/image-edit/original.jpg') w, h = img.size img_arr = np.array(img) # Strategy: # 1. Keep the right portion (female side) intact # 2. For the left portion where the male was, reconstruct background # by sampling and extending the background from around the male # The male occupies roughly x=0 to x=580, y=130 to y=1050 # We'll create a new image same size but replace the male region with background # Sample background from the upper area (above heads) and sides # Background region: top strip y=0 to y=130, and far right column # Create output image out = img_arr.copy() # The background behind both people - sample from top area # Top background: rows 0-130, full width - this has the decorative lights top_bg = img_arr[0:130, :, :] # For the male region, we need to fill with the blurred/extended background # The background visible on far left edge and between/around them # Approach: use the region just to the right of male (background between them) # visible at roughly x=560-620 which is background between the two people # Also sample background from top-left corner # Let's do a smarter approach: # 1. Mask the male (left person) region # 2. Fill with background sampled from surrounding areas # Male bounding box (approximate) male_x1, male_y1 = 0, 130 male_x2, male_y2 = 610, 1060 # Create a filled version by: # - Taking the background column just to the right of male head (~x=610-650) # - Tiling/extending it leftward # - Blending with top background # Sample the background strip between the two people (x=590-650) bg_strip = img_arr[:, 590:660, :] # background visible between them # Also sample far left background visible above the male shoulder (x=0-50, y=0-180) # and the background in the upper left # Fill the male region result = img_arr.copy() # For each pixel in male region, blend background # Simple approach: extend the background strip strip_w = bg_strip.shape[1] for x in range(male_x2): # Use corresponding strip pixel, or mirror from background strip src_x = min(x % strip_w, strip_w - 1) # Blend more from right side for smoother transition blend = min(1.0, (male_x2 - x) / 200.0) # fade at right edge for y in range(male_y1, male_y2): bg_pixel = bg_strip[y, src_x, :] orig_pixel = img_arr[y, x, :] # In the core male body area, use background if x < male_x2 - 80: result[y, x, :] = bg_pixel else: # Blend zone near female t = (male_x2 - x) / 80.0 result[y, x, :] = (bg_pixel * t + orig_pixel * (1 - t)).astype(np.uint8) # Now apply blur to the filled region to make it look more natural result_img = Image.fromarray(result) # Blur just the replaced region mask = Image.new('L', (w, h), 0) draw = ImageDraw.Draw(mask) draw.rectangle([male_x1, male_y1, male_x2, male_y2], fill=255) blurred = result_img.filter(ImageFilter.GaussianBlur(radius=8)) result_img = Image.composite(blurred, result_img, mask) # Now crop to show only the female side cleanly # Crop from x=560 to end to remove all male traces final = result_img.crop((560, 0, w, h)) final.save('/home/daytona/workspace/image-edit/female_removed_male.jpg', quality=95) print(f"Saved. Final size: {final.size}") EOF

Running Command

python3 << 'EOF' # Better approach: use OpenCV inpainting for more natural result import cv2 import numpy as np from PIL import Image img = cv2.imread('/home/daytona/workspace/image-edit/original.jpg') h, w = img.shape[:2] print(f"Image: {w}x{h}") # Create mask for the male (left person) # Male occupies roughly left half: x=0..590, body from y=130 to bottom mask = np.zeros((h, w), dtype=np.uint8) # Head area of male cv2.ellipse(mask, (255, 380), (165, 200), 0, 0, 360, 255, -1) # Body/torso of male cv2.rectangle(mask, (0, 520), (600, 1100), 255, -1) # Arm area cv2.rectangle(mask, (0, 400), (620, 580), 255, -1) # Left side background should not be masked (above male) # Keep the top part and right portion clear mask[:130, :] = 0 # top background - keep mask[:, 620:] = 0 # right side (female) - keep # Save mask for inspection cv2.imwrite('/home/daytona/workspace/image-edit/mask.jpg', mask) # Apply inpainting result = cv2.inpaint(img, mask, inpaintRadius=15, flags=cv2.INPAINT_TELEA) cv2.imwrite('/home/daytona/workspace/image-edit/inpainted_full.jpg', result) # Now crop to show only female side (right portion) # female is from about x=530 onwards female_region = result[:, 530:, :] cv2.imwrite('/home/daytona/workspace/image-edit/result_female_only.jpg', female_region, [cv2.IMWRITE_JPEG_QUALITY, 95]) print(f"Inpainting done. Female crop size: {female_region.shape[1]}x{female_region.shape[0]}") EOF

Running Command

python3 << 'EOF' # Final polished version - better mask and crop import cv2 import numpy as np img = cv2.imread('/home/daytona/workspace/image-edit/original.jpg') h, w = img.shape[:2] # More precise mask for the male person mask = np.zeros((h, w), dtype=np.uint8) # Male head (centered around x=250, y=370) cv2.ellipse(mask, (250, 370), (175, 215), 0, 0, 360, 255, -1) # Neck cv2.rectangle(mask, (175, 560), (340, 650), 255, -1) # Shoulders and upper body cv2.rectangle(mask, (0, 580), (620, 720), 255, -1) # Lower body / torso cv2.rectangle(mask, (0, 700), (570, 1100), 255, -1) # Left arm cv2.rectangle(mask, (0, 600), (200, 1100), 255, -1) # Don't mask the table area at bottom mask[1100:, :] = 0 # Don't mask the top background mask[:140, :] = 0 # Don't mask female side mask[:, 600:] = 0 # Dilate mask slightly for cleaner edges kernel = np.ones((15, 15), np.uint8) mask = cv2.dilate(mask, kernel, iterations=1) mask[:, 600:] = 0 # re-zero female side after dilation # Save mask cv2.imwrite('/home/daytona/workspace/image-edit/mask_v2.jpg', mask) # Inpaint result = cv2.inpaint(img, mask, inpaintRadius=20, flags=cv2.INPAINT_TELEA) # Crop: keep from x=520 to end (female fully visible) final = result[:, 510:] cv2.imwrite('/home/daytona/workspace/image-edit/final_female.jpg', final, [cv2.IMWRITE_JPEG_QUALITY, 96]) print(f"Done. Output: {final.shape[1]}x{final.shape[0]}") EOF

The image has been processed. Here is the result with the male removed:

final female

Image · JPG

What was done:
  • Used OpenCV's TELEA inpainting algorithm to intelligently fill the area where the male was with reconstructed background
  • The male's head, body, shoulders, and arms were masked and replaced with the background (restaurant interior, decorative lights, wall)
  • Cropped the image to center the female
Note: Inpainting works by reconstructing background from surrounding pixels. Since the two people were close together, the left edge near the female may show minor artifacts. For a perfectly clean result, an AI generative inpainting tool (like Adobe Firefly or Remove.bg) would give even smoother output.
This is a shared conversation. Sign in to Orris to start your own chat.