I'm new to image processing. I wonder if there is any way to extract the star logo from the image?
Asked
Active
Viewed 1.2k times
6

Pasindu Weerasinghe
- 93
- 1
- 1
- 9
-
From only this image? Crop to the relevant coordinates. If you have more than one image, it gets a bit more complicated... I would probably try some sort of Hough line or shape detector, or perhaps template matching on a normalized and otsu local thresholded image. If your dataset is sufficiently massive, you could even try a SOTA object detection model like YOLO. – Mateen Ulhaq May 02 '21 at 06:43
-
yes, only from this picture. Can we use Arithmetic and Logic Operations for this? – Pasindu Weerasinghe May 02 '21 at 06:45
-
1Just measure the coordinates in an image editing program, then do `star_img = img[y1:y2, x1:x2]` – Mateen Ulhaq May 02 '21 at 06:46
4 Answers
4
If you want to crop the logo out using OpenCV's cropping tool
import cv2
img = cv2.imread("fight plane.png")
crop_img = img[y:y+h, x:x+w]
cv2.imshow("cropped", crop_img)
cv2.waitKey(0)
Take coordinates. It is extremely easy. There is another question by the topic over here - How to crop an image in OpenCV using Python

sub2nullexception
- 98
- 7
3
Give this a go
import cv2 as cv
import numpy as np
img = cv.imread('airplane.png')
cv.imshow('Original', img)
blank = np.zeros(img.shape[:2], dtype='uint8')
center_coordinates = (144, 233)
radius = 10
mask = cv.circle(blank, center_coordinates, radius, 255, -1)
masked = cv.bitwise_and(img, img, mask=mask)
cv.imshow('Output', masked)
cv.waitKey(0)

DevDanyal
- 56
- 3
1
Use cv2.selectROI function
cv2.namedWindow('ROI')
# define area by mouse
r=cv2.selectROI('ROI', img,False,False)
imROI = img[int(r[1]):int(r[1]+r[3]), int(r[0]):int(r[0]+r[2])]
cv2.destroyWindow('ROI')
cv2.imshow("ROI", imROI)
cv2.waitKey(0)
cv2.destroyAllWindows()

Leox
- 340
- 4
- 9
0
import cv2
import argparse
ref_point = []
crop = False
def shape_selection(event, x, y, flags, param):
global ref_point, crop
if event == cv2.EVENT_LBUTTONDOWN:
ref_point = [(x, y)]
elif event == cv2.EVENT_LBUTTONUP:
ref_point.append((x, y))
cv2.rectangle(image, ref_point[0], ref_point[1], (0, 255, 0), 2)
cv2.imshow("image", image)
ap = argparse.ArgumentParser()
ap.add_argument("-i", "--image", required = True, help ="Path to the image")
args = vars(ap.parse_args())
image = cv2.imread(args["image"])
clone = image.copy()
cv2.namedWindow("image")
cv2.setMouseCallback("image", shape_selection)
while True:
cv2.imshow("image", image)
key = cv2.waitKey(1) & 0xFF
if key == ord("r"):
image = clone.copy()
elif key == ord("c"):
break
if len(ref_point) == 2:
crop_img = clone[ref_point[0][1]:ref_point[1][1], ref_point[0][0]: ref_point[1][0]]
cv2.imshow("crop_img", crop_img)
cv2.waitKey(0)
cv2.destroyAllWindows()
try this it will work

Jeevan
- 83
- 1
- 1
- 9