Python cv2 ip camera

Доступ к IP-камере в Python OpenCV

Я исследую то же самое, можете ли вы дать мне знать, как это происходит? Кроме того, знаете ли вы, есть ли бренд и метод, который является самым простым? (Поток mpeg / jpeg и т.д . ) Спасибо!

10 ответов

Я отвечаю на свой собственный вопрос, сообщая, что, таким образом, представляется наиболее полной процедурой доступа к IP-камере в Python OpenCV.

  • Найти IP адрес вашей камеры
  • Найдите port к которому осуществляется доступ к IP-адресу
  • Найти protocol (HTTP/RTSP и т.д.), Указанный поставщиком камеры

Затем, если ваша камера защищена, узнайте:

Затем используйте ваши данные для запуска следующего скрипта:

"""Access IP Camera in Python OpenCV""" import cv2 stream = cv2.VideoCapture('protocol://IP:port/1') # Use the next line if your camera has a username and password # stream = cv2.VideoCapture('protocol://username:[email protected]:port/1') while True: r, f = stream.read() cv2.imshow('IP Camera stream',f) if cv2.waitKey(1) & 0xFF == ord('q'): break cv2.destroyAllWindows() 

ПРИМЕЧАНИЕ: в моем первоначальном вопросе я указал на работу с камерой Teledyne Dalsa Genie Nano XL. К сожалению, для камер такого типа этот нормальный способ доступа к видеопотоку IP-камеры не работает, и для получения кадров с устройства необходимо использовать Sapera SDK.

Доступ к IP-камере возможен в opencv, предоставляя URL-адрес потоковой передачи камеры в конструкторе cv2.VideoCapture .

Как правило, RTSP или HTTP-протокол используется камерой для потокового видео. Ниже приведен пример URL-адреса потоковой передачи IP-камеры:

Его можно открыть с помощью OpenCV следующим образом:

capture = cv2.VideoCapture('rtsp://192.168.1.64/1') 

У большинства IP-камер есть имя пользователя и пароль для доступа к видео. В этом случае учетные данные должны быть указаны в потоковом URL-адресе следующим образом:

@sqarizvi Как мне найти URL для камеры? Он установлен в моей локальной сети, напрямую подключен к роутеру. Есть ли способ сканировать сеть из кода Python и найти URL?

@Abhishek . Вы можете найти IP-адрес камеры с помощью некоторой утилиты сетевого сканирования, такой как arp-scan в linux. Дополнительные сведения об URL-адресе, т. Protocol , Credentials и Channel можно найти в руководстве по эксплуатации камеры или в программном / мобильном приложении, поставляемом с камерой.

Спасибо за ответ. Я могу легко найти URL камеры, обратившись к своему маршрутизатору. Но так как мой интернет работает с динамическим IP, а IP / URL камеры постоянно меняются в случае отключения электричества или чего-то в этом роде. Поэтому мне было интересно, существует ли что-то в python, которое может сканировать сеть и найти IP-адрес камеры, чтобы я мог использовать URL-адрес камеры в качестве переменной вместо жесткого кодирования.

@ Abhishek, я думаю, вы можете попробовать со статической конфигурацией IP. Тогда вы можете иметь фиксированный IP вместо динамического распределения IP.

Сначала узнайте свой IP-канал для потоковой передачи, например, RTSP/HTTP и т.д.

Изменения кода будут следующими:

cap = cv2.VideoCapture("ipcam_streaming_url") 
cap = cv2.VideoCapture("http://192.168.18.37:8090/test.mjpeg") 

У меня возникла проблема, у меня есть две камеры — через RTSP, а другая — по HTTP, обе они хорошо работают в Ubuntu. Когда я передал тот же код в Raspberry pi, HTTP-камера не возвращала никаких кадров

Я не получаю никакого решения по этому вопросу, я разместил вопрос здесь. raspberrypi.stackexchange.com/questions/84708/.

Самый простой способ потокового видео через IP-камеру!

Я просто редактирую ваш пример. Вы должны заменить свой IP-адрес и добавить /video по вашей ссылке. И продолжайте свой проект

import cv2 cap = cv2.VideoCapture('http://192.168.18.37:8090/video') while(True): ret, frame = cap.read() cv2.imshow('frame',frame) if cv2.waitKey(1) & 0xFF == ord('q'): cv2.destroyAllWindows() break 

привет Adrew, ссылка, которую я упомянул выше, взята из приложения IP CAMERA. Так что, если вы используете телефон Android. Вы можете скачать это приложение из Google Store. Затем вы прокрутите вниз и найдете «Запустить сервер». Нажмите на это. Вы увидите ссылку того же типа выше. Удачи

Я использую IP-камеру из Google PlayStore, чтобы получить видео с камеры на мобильный телефон, и это сработало для меня

Для получения видео-ссылки IP-камеры:

  1. Откройте IP-камеру с данным IP и PORT в браузере.
  2. Щелкните правой кнопкой мыши видео и выберите «копировать адрес изображения»
  3. Используйте этот адрес для захвата видео

Недавно я столкнулся с этой проблемой и в конце концов решил ее, используя функцию inspect element Firefox. Я думаю, просто посмотреть на адрес изображения было бы еще проще. Таким образом, это более эффективный способ определения точного URI потока камеры.

Это работает с моей IP-камерой:

import cv2 #print("Before URL") cap = cv2.VideoCapture('rtsp://admin:[email protected]/H264?ch=1&subtype=0') #print("After URL") while True: #print('About to start the Read command') ret, frame = cap.read() #print('About to show frame of Video.') cv2.imshow("Capturing",frame) #print('Running..') if cv2.waitKey(1) & 0xFF == ord('q'): break cap.release() cv2.destroyAllWindows() 

Я нашел URL-адрес потока на экране настройки камеры:

Обратите внимание, что я добавил имя пользователя (admin) и пароль (123456) камеры и завершил его символом @перед IP-адресом в URL (admin: 123456 @).

В Pycharm я написал код для доступа к IP-камере, как:

import cv2 cap=VideoCapture("rtsp://user_name:[email protected]_address:port_number") ret, frame=cap.read() 

Вам нужно будет заменить user_name , password , IP и port с подходящими значениями

Вы будете испытывать некоторую грусть, если не справитесь с потоком и не разберетесь с делами должным образом (как в ответах выше)!

Для доступа к Ip-камере, во-первых, я рекомендую вам установить ее, как вы собираетесь использовать для стандартного приложения, без какого-либо кода, используя обычное программное обеспечение.

После этого вы должны знать, что для разных камер у нас разные коды. Существует веб-сайт, на котором вы можете увидеть, какой код вы можете использовать для доступа к ним:

Но будьте осторожны, для моей камеры (Intelbras S3020) она не работает. Правильный способ — спросить компанию своей камеры, и если они будут хорошей компанией, они предоставят ее.

Когда вы знаете свой код, просто добавьте его так:

cap = cv2.VideoCapture("http://LOGIN:[email protected]/cgi-bin/mjpg/video.cgi?&subtype=1") 

Вместо LOGIN вы поместите свой логин, а вместо этого PASSWORD вы поместите свой пароль.

Чтобы узнать IP-адрес камеры, есть много программ, которые вы можете загрузить и предоставить вам адрес Ip. Я использую программное обеспечение от Intelbras, но я также рекомендую EseeCloud, потому что они работают почти для всех камер, которые я купил:

В этом примере он показывает протокол http для доступа к Ip-камере, но вы также можете использовать rstp, это зависит от камеры, как я уже сказал.

Если у вас есть еще вопросы, просто дайте мне знать.

Источник

OpenCV and IP camera streaming with Python

With todays computing power (including embedded and hobby board computers), the commoditisation of web cameras, and the maturity of computer vision software and object detection algorithms, anyone can play around computer vision for negligible cost.

In this guide I’ll give you a rough start to streaming content from an IP camera to OpenCV (tested on v2.4.10) for building your own computer vision projects. Although the code in this guide is written in Python there are many other languages supported by OpenCV.

Ai-Ball IP camera

TL;DR

IP camera streaming into OpenCV

As getting vision from an IP camera into OpenCV is an unnecessarily tricky stumbling block, we’ll only concentrate on the code that streams vision from an IP camera to OpenCV which then simply displays that stream.

webcam-opencv-example.py

import numpy as np import cv2 import time import requests import threading from threading import Thread, Event, ThreadError class Cam(): def __init__(self, url): self.stream = requests.get(url, stream=True) self.thread_cancelled = False self.thread = Thread(target=self.run) print "camera initialised" def start(self): self.thread.start() print "camera stream started" def run(self): bytes='' while not self.thread_cancelled: try: bytes+=self.stream.raw.read(1024) a = bytes.find('\xff\xd8') b = bytes.find('\xff\xd9') if a!=-1 and b!=-1: jpg = bytes[a:b+2] bytes= bytes[b+2:] img = cv2.imdecode(np.fromstring(jpg, dtype=np.uint8),cv2.IMREAD_COLOR) cv2.imshow('cam',img) if cv2.waitKey(1) ==27: exit(0) except ThreadError: self.thread_cancelled = True def is_running(self): return self.thread.isAlive() def shut_down(self): self.thread_cancelled = True #block while waiting for thread to terminate while self.thread.isAlive(): time.sleep(1) return True if __name__ == "__main__": url = 'http://192.168.2.1/?action=stream' cam = Cam(url) cam.start()

Congratulations, you’re now streaming content into OpenCV. NB: Change the url to suit your particular camera.

Please explain.

I’ve had trouble with OpenCV and mpeg streams (even though OpenCV has support for this) as was the case in this instance with an Ai-Ball Wi-Fi camera. The code here deals with the camera’s mpeg stream directly and passes each image in that stream to OpenCV for consumption. As each (jpeg) image in the stream is binary encoded and each image frame contains a start marker ‘\xff\xd8’ and an end marker ‘\xff\xd9’ we can easily detect those markers and segment our stream into individual images. Many other people seem to have a similar problem so there are many other explanations and examples out there.

Examples

Here are a couple of examples of what you might want to do using OpenCV and some very lightweight built-in object detection algorithms (nothing fancy, just some crude knock-ups I’ve made for demo purposes):

First up, with relatively little extra code, and no other equipment, we can use fiducials to track position and orientation of objects:

Feature Matching + Homography to find Objects using OpenCV and the ORB (oriented BRIEF) keypoint detector and descriptor extractor. Determines the (x,y,z) of the centre point of a marker in order to determine where it is in 3D space relative to the camera.

  • OpenCV
  • ORB (oriented BRIEF) keypoint detector and descriptor extractor (one of many OpenCV object detection algorithms)
  • Ai-Ball web camera

Below is a more complex example that utilises an SMI Red 500 eye-tracker and PyViewX. NOTE: Eye-trackers are rapidly becoming a commodity item, and at the time of writing, the Tobii EyeX developer kit was available for $99USD. I have achieved very good results with this particular eye-tracker and the development SDK (C# only at this point in time) provides gaze and fixation event streams out of the box allowing you to build working models pretty quickly.

Feature Matching + Homography + Eye Tracking and Gaze Fixation to identify objects and locate them in space.

Determines fixation start and end points, and for the duration, draws a bounding box around the fixation area of interest (AOI) on the screen. If a recognised marker is within that box (i.e. we’re looking at an object) determine the (x,y,z) of the centre point of that marker in order to determine where it is in 3D space relative to the camera. NOTE: The fixation bounding box is for demonstration purposes only. In a real deployment you would not want to display the fixation bounding box as it distracts the user, which in turn changes their gaze point.

  • OpenCV
  • ORB (oriented BRIEF) keypoint detector and descriptor extractor (one of many OpenCV object detection algorithms)
  • SMI Red 500 eye tracker
  • PyViewX (remote streaming client for SMI eye tracker)
  • Ai-Ball web camera

Opportunities

The purpose of this rough and ready example is to get you started with getting IP camera streams into OpenCV. As shown in the second example in this article, eye-tracking can be easily integrated into computer vision projects and with the present day commoditisation of eye-trackers for the consumer market (including embedded in phones), the application for products combining computer vision and eye-tracking, along with other now commonly available technology like GPS, accelerometers, IMU’s, etc. is opening up many new development opportunities in computer vision.

Источник

Читайте также:  Silver tests ответы python
Оцените статью