Catalog PyPI
PACKAGE EXPLORERView in registry

a-cv2-shape-finder

PyPI

Detecting shapes with OpenCV, and getting all the important information in a DataFrame

cv2dataframedetectionobjectopencvpandasshapeshapes
Versions collected1
Direct dependencies6From release 0.11
Last observed20 Oct, 18:44 UTC

README

Version 0.11 documentation

Detecting shapes with OpenCV, and getting all the important information in a DataFrame


$pip install a-cv2-shape-finder

from a_cv2_shape_finder import get_shapes_using_ADAPTIVE_THRESH_GAUSSIAN_C,get_shapes_using_ADAPTIVE_THRESH_MEAN_C,get_shapes_using_THRESH_OTSU

import cv2

import pandas as pd

from a_cv2_imshow_thread import add_imshow_thread_to_cv2

from a_cv_imwrite_imread_plus import add_imwrite_plus_imread_plus_to_cv2

import numpy as np

add_imwrite_plus_imread_plus_to_cv2()

add_imshow_thread_to_cv2()

image2=cv2.imread_plus( r"http://clipart-library.com/img/2000719.png")



#method1 (best results)

df, bw_pic = get_shapes_using_ADAPTIVE_THRESH_GAUSSIAN_C(

    im=image2.copy(),

    method=cv2.CHAIN_APPROX_SIMPLE,

    approxPolyDPvar=0.02,

    constant_subtracted=2,

    block_size=11,

    return_bw_pic=True,

)

#method2 (good results)

df, bw_pic = get_shapes_using_ADAPTIVE_THRESH_MEAN_C(

    im=image2.copy(),

    method=cv2.CHAIN_APPROX_SIMPLE,

    approxPolyDPvar=0.04,

    constant_subtracted=2,

    block_size=11,

    return_bw_pic=True,

)



#method3 (not always good results)

df, bw_pic = get_shapes_using_THRESH_OTSU(

    im=image2.copy(),

    method=cv2.CHAIN_APPROX_SIMPLE,

    approxPolyDPvar=0.01,

    kernel=(1, 1),

    start_thresh=50,

    end_thresh=255,

    return_bw_pic=True,

)





   aa_arcLength  aa_isContourConvex  aa_center_x  aa_center_y   aa_area                                                                                                                   aa_convexHull  aa_len_convexHull  aa_len_cnts   aa_shape                              aa_rotated_rectangle aa_minEnclosingCircle_center  aa_minEnclosingCircle_radius                                                                                            aa_fitEllipse                 aa_fitLine  aa_h0  aa_h1  aa_h2  aa_h3  aa_bound_start_x  aa_bound_start_y  aa_bound_end_x  aa_bound_end_y  aa_bound_width  aa_bound_height

0   1994.000000                True          286          212  242952.0                                                                                [[[573, 0]], [[573, 424]], [[0, 424]], [[0, 0]]]                  4            4  rectangle          [[0, 0], [573, 0], [573, 424], [0, 424]]                   (286, 212)                           356                                                                                                     <NA>     ((573, 212), (0, 212))     -1     -1      1     -1                 0                 0             574             425             574              425

1     17.656854                True          511          398      23.0                [[[509, 397]], [[510, 396]], [[513, 396]], [[514, 397]], [[514, 400]], [[513, 401]], [[510, 401]], [[509, 400]]]                  8            8     circle  [[509, 396], [514, 396], [514, 401], [509, 401]]                   (511, 398)                             2                                            ((511.5, 398.5), (5.830951690673828, 5.830951690673828), 0.0)     ((573, 398), (0, 398))      2     -1     -1      0               509               396             515             402               6                6

2     67.213203               False          402          395     128.0                                                          [[[396, 388]], [[406, 387]], [[409, 399]], [[405, 401]], [[397, 401]]]                  5            7       oval  [[395, 388], [407, 386], [409, 400], [397, 401]]                   (402, 394)                             8    ((401.52850341796875, 394.2469482421875), (13.484291076660156, 29.70796012878418), 84.56861877441406)  ((573, 1267), (0, -1646))      3      1     -1      0               396               387             410             402              14               15

3     88.183766               False          543          396     172.5                                                          [[[538, 386]], [[551, 389]], [[550, 401]], [[543, 401]], [[535, 400]]]                  5           10       oval  [[535, 400], [538, 386], [552, 389], [549, 403]]                   (542, 394)                             9     ((540.5974731445312, 393.8035888671875), (14.401185989379883, 27.078874588012695), 93.7881088256836)   ((573, 561), (0, -2567))      4      2     -1      0               535               386             552             402              17               16

4     42.384776                True          530          393     122.5  [[[530, 386]], [[532, 386]], [[535, 389]], [[535, 397]], [[533, 400]], [[528, 401]], [[525, 398]], [[525, 392]], [[527, 388]]]                  9            9       oval  [[525, 401], [525, 386], [535, 386], [535, 401]]                   (530, 393)                             7   ((530.2174682617188, 393.71160888671875), (11.07934856414795, 15.688089370727539), 10.645519256591797)   ((573, -138), (0, 6796))      6      3      5      0               525               386             536             402              11               16

5     12.242641               False          530          393       7.5                                            [[[531, 395]], [[530, 396]], [[529, 395]], [[529, 393]], [[530, 391]], [[531, 391]]]                  6            7       oval  [[529, 391], [531, 391], [531, 396], [529, 396]]                   (530, 393)                             2    ((530.2325439453125, 393.48016357421875), (2.533412456512451, 5.182924270629883), 12.179041862487793)    ((573, -82), (0, 6120))     -1     -1     -1      4               529               391             532             397               3                6

6     53.941125               False          520          393     102.0                [[[521, 386]], [[525, 389]], [[525, 396]], [[522, 400]], [[519, 401]], [[515, 398]], [[514, 394]], [[516, 389]]]                  8           12       oval  [[511, 395], [519, 384], [528, 391], [520, 402]]                   (520, 393)                             7   ((519.7500610351562, 393.70819091796875), (10.821428298950195, 15.00129222869873), 12.044055938720703)    ((573, 263), (0, 1652))      7      4     -1      0               514               386             526             402              12               16

7    124.911687               False          475          395     252.5                [[[471, 386]], [[477, 386]], [[488, 389]], [[487, 398]], [[480, 410]], [[475, 409]], [[466, 398]], [[467, 392]]]                  8           15       oval  [[463, 405], [469, 383], [489, 389], [483, 411]]                   (477, 397)                            13  ((477.4767761230469, 396.48944091796875), (20.678686141967773, 25.679677963256836), 21.347288131713867)   ((573, 781), (0, -1472))      9      6      8      0               466               386             489             411              23               25

8     10.242641                True          482          393       7.5                              [[[484, 394]], [[483, 395]], [[482, 395]], [[481, 394]], [[481, 393]], [[482, 392]], [[484, 392]]]                  7            7     circle  [[481, 392], [484, 392], [484, 395], [481, 395]]                   (482, 393)                             1                  ((482.6419372558594, 393.3580627441406), (3.061401844024658, 3.7628066539764404), 45.0)     ((573, 302), (0, 876))     -1     -1     -1      7               481               392             485             396               4                4

9     81.112698               False          459          399     212.5                              [[[465, 386]], [[466, 405]], [[463, 410]], [[458, 410]], [[454, 403]], [[455, 391]], [[458, 387]]]                  7           11       oval  [[453, 386], [465, 386], [466, 409], [454, 410]]                   (461, 398)                            12      ((460.94775390625, 397.08856201171875), (13.2537202835083, 25.697481155395508), 2.9813687801361084)  ((573, 2400), (0, -7608))     11      7     10      0               454               386             467             411              13               25



#Let's draw the results from the second picture

#There is nothing better than Pandas to process data.

image = image2.copy()

for name, group in df.groupby("aa_h3"):

    if name == 0:

        continue

    fabb = (

        np.random.randint(50, 250),

        np.random.randint(50, 250),

        np.random.randint(50, 250),

    )

    for key, item in group.loc[(group.aa_area > 200) & (

    group.aa_shape.isin(['rectangle', 'triangle', 'circle', 'pentagon', 'hexagon']))].iterrows():

        image = cv2.drawContours(

            image, item.aa_convexHull, -1, color=fabb, thickness=5, lineType=cv2.LINE_AA

        )

        image = cv2.rectangle(

            image,

            (item.aa_bound_start_x, item.aa_bound_start_y),

            (item.aa_bound_end_x, item.aa_bound_end_y),

            (0, 0, 0),

            3,

        )

        image = cv2.rectangle(

            image,

            (item.aa_bound_start_x, item.aa_bound_start_y),

            (item.aa_bound_end_x, item.aa_bound_end_y),

            fabb,

            2,

        )

        image = cv2.putText(

            image,

            f'{str(item.aa_shape)} - {name}',

            (item.aa_bound_start_x, item.aa_bound_start_y),

            cv2.FONT_HERSHEY_SIMPLEX,

            0.4,

            (0, 0, 0),

            2,

            cv2.LINE_AA,

        )

        image = cv2.putText(

            image,

            f'{str(item.aa_shape)} - {name}',

            (item.aa_bound_start_x, item.aa_bound_start_y),

            cv2.FONT_HERSHEY_SIMPLEX,

            0.4,

            fabb,

            1,

            cv2.LINE_AA,

        )



cv2.imshow_thread([image, bw_pic])

Downloads & popularity

Awaiting observations

No metric observations yet

Download counts and popularity will appear here as the collector receives them.

Versions 1

Collected releases
VersionPublishedDirect dependenciesOpen version
0.1113 Nov 20226

Package advisories

0
No matching advisories collected

This describes our collected data; it is not a security assessment.

Repository

ACCESSIBLE
hansalemaos/a_cv2_shape_finder

Shared repository data · GitHub

License detected in repository
MIT
License branch / ref
main
Last push
13 Nov 2022
Archived
No
Contributor identities
— · partial collection

Public sponsor counts have not been collected. These signals belong to the repository owner.

Downloads & popularity

0count
Gauge · observed snapshots20 Oct 2026
10.50
2026-10-20: 0 · observed 2026-10-20T21:38:18.0504110Z
20 Oct20 Oct

github · 1 observations shown. Missing days are unknown.

View observed values
Date / source periodValueObserved at
2026-10-2002026-10-20T21:38:18.0504110Z

Metadata history

Meaningful changes
Current collected state Current

Observed since 20 Oct, 18:44 UTC

No superseded metadata states collected. Unchanged observations do not create new revisions.

Record identity

package:f336d02708b7e56b94e18e5436d58c409b0603cdaac67449f54cd562f7d49d0b