'Finding an orientation of an object, in real-time video - Python openCV

I am using the attached code found here to find the orientation of objects:

import cv2
import numpy as np

# load image as HSV and select saturation
img = cv2.imread("wing2.png")
hh, ww, cc = img.shape

# convert to gray
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

# threshold the grayscale image
ret, thresh = cv2.threshold(gray, 0, 255, 0)
#ret, thresh = cv2.threshold(gray, 165, 255, cv2.THRESH_BINARY)

# find outer contour
cntrs = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
#cntrs = cv2.findContours(thresh, cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)
cntrs = cntrs[0] if len(cntrs) == 2 else cntrs[1]


# get rotated rectangle from outer contour
rotrect = cv2.minAreaRect(cntrs[0])
box = cv2.boxPoints(rotrect)
box = np.int0(box)

# draw rotated rectangle on copy of img as result
result = img.copy()
cv2.drawContours(result, [box], 0, (0, 0, 255), 2)

# get angle from rotated rectangle
angle = rotrect[-1]

# from https://www.pyimagesearch.com/2017/02/20/text-skew-correction-opencv-python/
# the `cv2.minAreaRect` function returns values in the
# range [-90, 0); as the rectangle rotates clockwise the
# returned angle trends to 0 -- in this special case we
# need to add 90 degrees to the angle
if angle < -45:
    angle = -(90 + angle)

# otherwise, just take the inverse of the angle to make
# it positive
else:
    angle = -angle

print(angle, "deg")

# write result to disk
cv2.imwrite("wing2_rotrect.png", result)

cv2.imshow("THRESH", thresh)
cv2.imshow("RESULT", result)
cv2.imshow("gray", gray)
cv2.waitKey(0)
cv2.destroyAllWindows()

But I have 2 main problems,

1. I cannot find - using the code - the orientation of objects that are in other images (sample images are attached), but only the orientation of the original image found in the thread.

enter image description here enter image description here

2. I did not succeed in transforming the code to find the orientation of an object in camera feed in real time - something that can be seen in this video: https://www.youtube.com/watch?v=Dxdy6Rzo7d0

As i'm new in OpenCV and i don't have a clue to solve this, i'll be very grateful for your help,

thanking!

Avishai



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source