1

I am using two HIKVISION IP camera (DS-2CD204WFWD-I) & (DS-2CD214WFWD-I) connected with (DS-7600 Series) NVR. Now how to acess these camera using Opencv and python ?

I had already tried this method its not working and code is running and its not getting the frame. With NVR software camera is showing live streaming and in andoird app also but i am not getting any frames with python. so please help me how can i acess these camera using opencv for face recognition.

import numpy as np
import cv2

cap = cv2.VideoCapture()

cap.open("rtsp://yourusername:yourpassword@172.16.30.248:555/
Streaming/channels/2/")

while(True):
 # Capture frame-by-frame
    ret, frame = cap.read()

# Our operations on the frame come here
    gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

# Display the resulting frame
    cv2.imshow('frame',ret)

    if cv2.waitKey(1) & 0xFF == ord('q'):
        break

# When everything done, release the capture
cap.release()
cv2.destroyAllWindows()

I expect both camera should be open using opencv.

Akash Dixit
  • 97
  • 3
  • 11

2 Answers2

3

Hm, usual addresses are:

  • Primary channel: rtsp://yourusername:yourpassword@172.16.30.248:555/ Streaming/Channels/101

  • Second channel: rtsp://yourusername:yourpassword@172.16.30.248:555/ Streaming/Channels/102

Nuzhny
  • 1,869
  • 1
  • 7
  • 13
  • 1
    it's working, Do we need to connect HIKVISION IP camera (DS-2CD204WFWD-I) & (DS-2CD214WFWD-I) compulsory with NVR for image processing and OpenCV? currently, in-camera setting, I have selected 20fps whereas when I run my code i am getting frames at very slow speed like 1 frame after 5 seconds. so do I need to keep connected it with NVR or i have to directly use It's IP address for image processing. – Akash Dixit Feb 18 '19 at 15:50
1

you don' need connect the ipc to nvr when you want to get the stream from the camera. i know Hikvison camera very well, you can send me email(paulpeter@foxmail.com)if you have any question about Hikvision camera. this is the python code for detect motion on Hikvsion camera base on opencv library

import cv2, time, pandas
from datetime import datetime

first_frame = None
status_list = [None,None]
times = []
df=pandas.DataFrame(columns=["Start","End"])

video = cv2.VideoCapture('rtsp://admin:Paxton10@10.199.27.128:554')

while True:
    check, frame = video.read()
    status = 0
    gray = cv2.cvtColor(frame,cv2.COLOR_BGR2GRAY)
    gray = cv2.GaussianBlur(gray,(21,21),0)

    if first_frame is None:
        first_frame=gray
        continue

    delta_frame=cv2.absdiff(first_frame,gray)
    thresh_frame=cv2.threshold(delta_frame, 30, 255, cv2.THRESH_BINARY)[1]
    thresh_frame=cv2.dilate(thresh_frame, None, iterations=2)

    (cnts,_)=cv2.findContours(thresh_frame.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)

    for contour in cnts:
        if cv2.contourArea(contour) < 200000:
            continue
        status=1

        (x, y, w, h)=cv2.boundingRect(contour)
        cv2.rectangle(frame, (x, y), (x+w, y+h), (0,255,0), 3)
    status_list.append(status)

    status_list=status_list[-2:]


    if status_list[-1]==1 and status_list[-2]==0:
        times.append(datetime.now())
    if status_list[-1]==0 and status_list[-2]==1:
        times.append(datetime.now())


    #cv2.imshow("Gray Frame",gray)
    #cv2.imshow("Delta Frame",delta_frame)
    imS = cv2.resize(thresh_frame, (640, 480))
    cv2.imshow("Threshold Frame",imS)

    imS = cv2.resize(frame, (640, 480))
    cv2.imshow("Color Frame",imS)
    #cv2.imshow("Color Frame",frame)

    key=cv2.waitKey(1)

    if key == ord('q'):
        if status == 1:
            times.append(datetime.now())
        break

print(status_list)
print(times)

for i in range(0, len(times), 2):
    df = df.append({"Start": times[i],"End": times[i+1]}, ignore_index=True)

df.to_csv("Times.csv")

video.release()
cv2.destroyAllWindows
Paul Peter
  • 31
  • 3