【发布时间】:2022-01-19 02:30:50
【问题描述】:
我正在尝试更改 OpenCV 的 IP 地址,以便它可以对其他摄像机进行采样。套接字服务器和客户端工作。我正在通过套接字发送整个地址。我不需要任何接近实时性能的东西。只想在不重新启动 OpenCV 的情况下更换相机。这是一个娱乐项目。
import numpy as np
import cv2
import socket
import time
HEADER = 64
PORT = 5000
FORMAT = 'utf-8'
DISCONNECT_MESSAGE = "!DISCONNECT"
SERVER = "localhost"
ADDR = (SERVER, PORT)
client = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client.connect(ADDR)
def send(msg):
message = msg.encode(FORMAT)
msg_length = len(message)
send_length = str(msg_length).encode(FORMAT)
send_length += b' ' * (HEADER - len(send_length))
client.send(send_length)
client.send(message)
# print(client.recv(2048).decode(FORMAT))
camAddress = client.recv(2048).decode(FORMAT)
return
#face_cascade = cv2.CascadeClassifier('cascade.xml')
#cap = cv2.VideoCapture('camAddress')
while 1:
# send("ACK")
face_cascade = cv2.CascadeClassifier('cascade.xml')
cap = cv2.VideoCapture(send("ACK")) ## gets camera IP address from server
ret, img = cap.read()
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(gray, 1.3, 5)
for (x, y, w, h) in faces:
cv2.rectangle(img, (x, y), (x + w, y + h), (255, 255, 0), 2)
roi_gray = gray[y:y + h, x:x + w]
roi_color = img[y:y + h, x:x + w]
cv2.imshow('img', img)
if cv2.waitKey(1) & 0xFF == 27:
break
cap.release()
cv2.destroyAllWindows()
对于如何实现这一点,我将不胜感激。谢谢!
【问题讨论】:
-
请原谅我是个白痴。在 def send(msg): 函数中,我只是在返回后添加了 camAddress 并开始工作。
标签: python opencv sockets networking