【问题标题】:How to change OpenCV IP address using sockets?如何使用套接字更改 OpenCV IP 地址?
【发布时间】: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


【解决方案1】:

请原谅我是个白痴。在 def send(msg): 函数中,我只是在返回后添加了 camAddress 并开始工作。我希望其他希望通过套接字控制 OpenCV 的人会发现这很有用。

【讨论】:

    猜你喜欢
    • 2012-10-09
    • 2012-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-03
    • 2011-10-01
    相关资源
    最近更新 更多