Esempio n. 1
0
    imgContours, conts = utils.getContours(img, minArea=50000, filter=4)
    if len(conts) != 0:
        biggest = conts[0][2]
        #print(biggest)
        imgWarp = utils.warpImg(img, biggest, wP, hP)
        imgContours2, conts2 = utils.getContours(imgWarp,
                                                 minArea=2000,
                                                 filter=4,
                                                 cThr=[50, 50],
                                                 draw=False)
        if len(conts) != 0:
            for obj in conts2:
                cv2.polylines(imgContours2, [obj[2]], True, (0, 255, 0), 2)
                nPoints = utils.reorder(obj[2])
                nW = round((utils.findDis(nPoints[0][0] // scale,
                                          nPoints[1][0] // scale) / 10), 1)
                nH = round((utils.findDis(nPoints[0][0] // scale,
                                          nPoints[2][0] // scale) / 10), 1)
                cv2.arrowedLine(imgContours2,
                                (nPoints[0][0][0], nPoints[0][0][1]),
                                (nPoints[1][0][0], nPoints[1][0][1]),
                                (255, 0, 255), 3, 8, 0, 0.05)
                cv2.arrowedLine(imgContours2,
                                (nPoints[0][0][0], nPoints[0][0][1]),
                                (nPoints[2][0][0], nPoints[2][0][1]),
                                (255, 0, 255), 3, 8, 0, 0.05)
                x, y, w, h = obj[3]
                cv2.putText(imgContours2, '{}cm'.format(nW), (x + 30, y - 10),
                            cv2.FONT_HERSHEY_COMPLEX_SMALL, 1.5, (255, 0, 255),
                            2)
                cv2.putText(imgContours2, '{}cm'.format(nH),
Esempio n. 2
0
    if len(finalCnt) != 0:
        biggest = finalCnt[0][2]
        #print(biggest)
        imgWrap = utils.warpImg(img, biggest, wp, hp)

        imgCnt2, finalCnt2 = utils.getContours(imgWrap,
                                               min_area=200,
                                               filter=4,
                                               draw=False)

        if len(finalCnt) != 0:
            for obj in finalCnt2:
                cv2.polylines(imgCnt2, [obj[2]], True, (0, 0, 255), 2)
                nPoints = utils.reorder(obj[2])
                nW = round(
                    (utils.findDis(nPoints[0][0] // sc, nPoints[1][0] // sc) /
                     10), 1)
                nH = round(
                    (utils.findDis(nPoints[0][0] // sc, nPoints[2][0] // sc) /
                     10), 1)
                cv2.arrowedLine(imgCnt2, (nPoints[0][0][0], nPoints[0][0][1]),
                                (nPoints[1][0][0], nPoints[1][0][1]),
                                (255, 0, 255), 3, 8, 0, 0.05)
                cv2.arrowedLine(imgCnt2, (nPoints[0][0][0], nPoints[0][0][1]),
                                (nPoints[2][0][0], nPoints[2][0][1]),
                                (255, 0, 255), 3, 8, 0, 0.05)
                x, y, w, h = obj[3]
                cv2.putText(imgCnt2, '{}cm'.format(nW), (x + 30, y - 10),
                            cv2.FONT_HERSHEY_COMPLEX_SMALL, 1.5, (255, 0, 255),
                            2)
                cv2.putText(imgCnt2, '{}cm'.format(nH), (x - 70, y + h // 2),