i want to Connect Hikvision ip camera with python and open cv using this code :
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()
when i run my code i got this Error :
Traceback (most recent call last):
File "C:\Users\Amin\Desktop\ip camera in py\csm.py", line 15, in <module>
cv2.imshow('frame',ret)
cv2.error: OpenCV(4.0.0) c:\projects\opencv-python\opencv\modules\imgproc\src\color.hpp:261: error: (-2:Unspecified error) in function '__cdecl cv::CvtHelper<struct cv::Set<1,-1,-1>,struct cv::Set<3,4,-1>,struct cv::Set<0,2,5>,2>::CvtHelper(const class cv::_InputArray &,const class cv::_OutputArray &,int)'
> Unsupported depth of input image:
> 'VDepth::contains(depth)'
> where
> 'depth' is 6 (CV_64F)
i test my camera whit VLCPlayer and it work perfectly!
i think the problem refer to opencv4!
how can i fix it? tnx a lot
The error is you are passing a BOOLEAN
value instead a Mat
value in imshow()
function of OpenCV here:
cv2.imshow('frame',ret)
So you should pass the frame:
cv2.imshow('frame',frame)
cap.read()
in Python
returns two values, one is Boolean
which shows whether or not the frame was successfully read, and the second one is the frame itself. So you should check for the ret
if it is true
, then show the frame.