how to find the shape of an object in an image using python [closed]

  • Last Update :
  • Techknowledgy :

I don't recommend grayscale for your image. You appear to be interested in red flower versus green background. A simple and clear way to make that distinction in your image to identify with the flower any pixels whose red value is higher than its green value.

import cv2
from numpy
import array
img = cv2.imread('flower.jpg')
img2 = array(200 * (img[: ,: , 2] > img[: ,: , 1]), dtype = 'uint8')

img2 clearly shows the shape of the flower. To get the edges only, you can use a canny edge detector:

edges = cv2.Canny(img2, 70, 50)
cv2.imwrite('edges.png', edges)

The next step, if you want, is to extract coordinates of the edges. This can be done with:

contours, hierarchy = cv2.findContours(edges, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)

Suggestion : 2

In this post we discussed how to find shapes in images using the cv2.inRange  and cv2.findContours  functions.,Lines 8-10 handle parsing the command line arguments. We need just a single switch, --image , which is the path to our image on disk.,Then, we start looping over each of the individual contours on Line 28 and draw the outline of the shapes onto the original image on Line 30.,So let’s give a big hand to Oscar. He’s done a great job. And he’s proof that you can learn computer vision in just a single weekend using Practical Python and OpenCV.

Open up a new file, name it , and we’ll get to work.

import the necessary packages
import numpy as np
import argparse
import imutils
import cv2

# construct the argument parse and parse the arguments
ap = argparse.ArgumentParser()
ap.add_argument("-i", "--image", help = "path to the image file")
args = vars(ap.parse_args())

# load the image
image = cv2.imread(args["image"])

Detecting these black shapes is actually very easy using the cv2.inRange function:

# find all the 'black'
shapes in the image
lower = np.array([0, 0, 0])
upper = np.array([15, 15, 15])
shapeMask = cv2.inRange(image, lower, upper)

The next step is to detect the contours in the shapeMask . This is also very straightforward:

# find the contours in the mask
cnts = cv2.findContours(shapeMask.copy(), cv2.RETR_EXTERNAL,
cnts = imutils.grab_contours(cnts)
print("I found {} black shapes".format(len(cnts)))
cv2.imshow("Mask", shapeMask)

# loop over the contours
for c in cnts:
   # draw the contour and show it
cv2.drawContours(image, [c], -1, (0, 255, 0), 2)
cv2.imshow("Image", image)

Suggestion : 3

In the previous tutorial, we have seen how you can detect edges in an image. However, that's not usually enough in the image processing phase. In this tutorial, you will learn how you can detect shapes (mainly lines and circles) in images using Hough Transform technique in Python using OpenCV library.,Learning how to detect contours in images for image segmentation, shape analysis and object detection and recognition using OpenCV in Python.,Learn how to perform perspective image transformation techniques such as image translation, reflection, rotation, scaling, shearing and cropping using OpenCV library in Python.,Learning how to apply edge detection in computer vision applications using canny edge detector algorithm with OpenCV in Python.

Let's get started, installing the requirements:

pip3 install opencv - python numpy matplotlib

Importing the modules:

import numpy as np
import matplotlib.pyplot as plt
import cv2

I'm gonna use a photo of a computer monitor, make sure you have the photo monitor.jpg in your current directory (you're free to use any):

# read the image
image = cv2.imread("monitor.jpg")

Let's detect the edges of the image:

# perform edge detection
edges = cv2.Canny(grayscale, 30, 100)

Now we have detected the edges in the image, it is suited for us to use hough transform to detect the lines:

# detect lines in the image using hough lines technique
lines = cv2.HoughLinesP(edges, 1, np.pi / 180, 60, np.array([]), 50, 5)

Suggestion : 4

Recognise morphometric problems (those dealing with the number, size, or shape of the objects in an image).,Recognise morphometric problems (those dealing with the number, size, or shape of the objects in an image). ,Morphometric problems involve the number, shape, and / or size of the objects in an image.,Morphometric problems involve the number, shape, and / or size of the objects in an image.

" *
Python libraries
for learning and performing image processing.*
import numpy as np
import skimage.viewer
import matplotlib.pyplot as plt
import ipympl
import skimage # form 1, load whole skimage library
import # form 2, load module only
import imread # form 3, load only the imread
import numpy as np # form 4, load all of numpy into an object called np
% matplotlib widget
image = = "data/eight.tif")
(5, 3)[[0. 0. 0.]
   [0. 1. 0.]
   [0. 0. 0.]
   [0. 1. 0.]
   [0. 0. 0.]]