Primera prueba:
En Google Collab se intenta agregar una imagen diferente como prueba, se logró, pero no se pudo descifrar las demás celdas de código por error de síntesis en el códgio.
Celda en donde se cambió el url de github del modelo oficial de RAFT por una imagen aleatoria, en este caso sacado de un juego (Honkai Star Rail).
# !wget https://github.com/itberrios/CV_projects/blob/main/RAFT/test_images/fan_frame_1.png
# !wget https://raw.githubusercontent.com/itberrios/CV_projects/main/RAFT/test_images/fan_frame_1.png
Se econtró el siguiente error:
ModuleNotFoundError Traceback (most recent call last)
<ipython-input-18-2ce1d49a79d2> in <cell line: 5>()
3 import requests
4 import matplotlib.pyplot as plt
----> 5 from raft import RAFT
6 from utils import flow_viz
7 from utils.utils import InputPadder
ModuleNotFoundError: No module named 'raft'
---------------------------------------------------------------------------
NOTE: If your import is failing due to a missing package, you can
manually install dependencies using either !pip or !apt.
To view examples of installing some common dependencies, click the
"Open Examples" button below.
Esto se debe a que Phyton no encuentra el módulo RAFT.
Segunda prueba:
En Google Collab se intenta agregar una imagen diferente como prueba, pero no se alcanza a ver la imágen, sólo los lienzos.
Celda en donde se cambió el url de github del modelo oficial de RAFT por una imagen aleatoria que fue cargada en mi github, en este caso sacado de un juego (Honkai Star Rail).
# !wget (https://github.com/josefa52/audiv027-2024-1/assets/163590856/5eb7c5cc-082d-4d51-88b8-2df76ab202df)
Se econtró el siguiente error:
# Mostrar la imagen en la subtrama correspondiente
ax[i].imshow(image_rgb)
ax[i].set_title(f"Frame {i+1}")
else:
print(f"No se pudo leer la imagen: {image_name}")
else:
print(f"Error al descargar la imagen {image_name}. Código de estado: {response.status_code}")
except Exception as e:
print(f"Error al procesar la imagen {image_name}: {str(e)}")
# Mostrar la figura
plt.show()
Tercera prueba:
Se encuentra un video en Youtube explicando un código de Optical Flow in OpenCV Phyton, usando Visual Studio Code.
https://www.youtube.com/watch?v=WrlH5hHv0gE
import numpy as np
import cv2
import time
def draw flow(img, flow, step=16):
h, w = img.shape[:2]
y, x = np.mgrid[step/:h:step, step/2:w:step].reshape(2,-1).astype(int)
fx, fy = flow[y,x].T
lines = np.vstack([x, y x-fx, y-fy]).T.reshape(-1, 2, 2)
lines = np.int32(lines + 0.5)
img_bgr = cv2.cvtColor(img, cv2.COLOR_GRAY2BGR)
cv2.polylines(img_bgr, lines,0, (0, 255, 0))
for (x1, y1), (_x2, _y2) in lines:
cv2.circle(img_bgr, (x1, y1), 1, (0, 255, 0), -1)
return img_bgr
def draw_hsv(flow):
h, w = flow.shape[:2]
fx, fy = flow[:,:,0], flow[:,:,1]
ang = np.arctan2(fy, fx) + np.pi
v = np.sqrt(fx*fx+fy*fy)
hsv = np.zeros((h, w, 3), np.uint8)
hsv[...,0] = ang*(180/np.pi/2)
hsv[...,1] = 255
hsv[...,2] = np.minimum(v*4, 255)
bgr = cv2.cvtColor(hsv, cv2.COLOR_HSV2BGR)
return bgr
cap = cv2.VideoCapture(0)
suc, prev = cap.read()
prevgray = cv2.cvtColor(prev, cv2.COLOR_BGR2GRAY)
while True:
suc, img = cap.read()
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# startn time to calculate FPS
start = time.time()
flow = cv2.calcOpticalFlowFarneback(prevgray, gray, None, 0.5, 3, 15, 3, 5, 1.2, 0)
prevgray = gray
# End time
end = time.time()
# calculate the FPS for current frame detection}
fps = 1 / (end-start)
print(f"{fps:.2f}FPS")
cv2.imshow("flow", draw_flow(grat, flow))
cv2.imshow("flow HSV", draw_hsv(flow))
key = cv2.waitKey(5)
if key == ord("q"):
break
Se encontró el siguiente error:
def draw flow(img, flow, step=16):
^^^^
SyntaxError: expected '('
def draw flow(img, flow, step=16):
^^^^
SyntaxError: expected '('