首页 > 解决方案 > 将网络摄像机连接到 python/opencv

问题描述

我已经使用 Tensorflow 使用 python/OpenCV 训练了我的 CNN 模型,并使用它成功地测试了图像。我现在正在尝试使用外部 IP 摄像机测试我的程序。我想我可以使用相机的 IP 地址来做到这一点,但我不知道如何在我的代码中修改它。任何帮助都会在这里有用的是我的程序:

from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.preprocessing import image
from tensorflow.keras.optimizers import RMSprop
import matplotlib.pyplot as plt
import tensorflow as tf
import cv2
import os
import numpy as np

img = image.load_img("computer vision/train/NOK/1.BMP")
plt.imshow(img)

train = ImageDataGenerator(rescale=1/255)
validation = ImageDataGenerator(rescale=1/255)


train_dataset = train.flow_from_directory("computer vision/train/", target_size = (200,200) , batch_size = 3,class_mode = 'binary')
validation_dataset = train.flow_from_directory("computer vision/valid/", target_size = (200,200) , batch_size = 3,class_mode = 'binary')

model = tf.keras.models.Sequential([tf.keras.layers.Conv2D(16,(3,3), activation = 'relu', input_shape = (200,200,3)),tf.keras.layers.MaxPool2D(2,2),
                                   tf.keras.layers.Conv2D(32,(3,3), activation = 'relu'),tf.keras.layers.MaxPool2D(2,2),
                                   tf.keras.layers.Conv2D(64,(3,3), activation = 'relu'),tf.keras.layers.MaxPool2D(2,2),
                                   tf.keras.layers.Flatten(),
                                   tf.keras.layers.Dense(512, activation= 'relu'),
                                   tf.keras.layers.Dense(1,activation = 'sigmoid')
                                   ])

model.compile(loss = 'binary_crossentropy',
             optimizer = RMSprop(lr=0.001),
              metrics = ['accuracy']
             )

model_fit = model.fit(train_dataset,
                   steps_per_epoch=3,
                   epochs=10,
                   validation_data=validation_dataset)


dir_path = "C:/Users/Dell/OneDrive/Bureau/Nouveau dossier (2)"


for i in os.listdir(dir_path):

    img = image.load_img(dir_path + '//' + i, target_size=(200, 200))

    plt.imshow(img)
    plt.show()
    X = image.img_to_array(img)
    X = np.expand_dims(X, axis=0)
    images = np.vstack([X])
    val = model.predict(images)
    if val == 0:
        print("NOK")
    else:
        print("OK")
    

标签: pythonopencvdeep-learningcomputer-visionip-camera

解决方案


我想你想说,你想用你的网络摄像机流式传输,对吗?

尝试这个

cap = cv2.VideoCamera(1)
cap.open('https://yourip:port')

也许这会奏效!

如果您想将手机用作 Ip 摄像头,有一个名为 Ip Camera 的应用程序

只需安装它并启动您的服务器

你就可以通过这个网址访问它-cap.open('https://yourip:port/video')


推荐阅读