Python Opencv Videocapture에서 Gazebo gstreamer UDP 비디오 받기

Bozkurthan

물체 감지 Gazebo 시뮬레이션 환경을 구현하려고합니다. 이를 위해 https://dev.px4.io/v1.9.0/en/simulation/gazebo.html 이 사이트를 사용 합니다. QGroundControl에서 비디오를 받고 있습니다. 또한 Python을 통해 USB 웹캠에서 비디오를 수신하고 개체를 감지합니다. 이제 python Opencv videocapture 함수에서 gstreamer UDP 비디오를 받고 싶습니다. 그러나 오류가 발생합니다.

  File "gstreamer_try.py", line 120, in <module>
    feed_dict={image_tensor: image_np_expanded})
  File "/home/hanco/anaconda3/lib/python3.7/site-packages/tensorflow_core/python/client/session.py", line 956, in run
    run_metadata_ptr)
  File "/home/hanco/anaconda3/lib/python3.7/site-packages/tensorflow_core/python/client/session.py", line 1149, in _run
    np_val = np.asarray(subfeed_val, dtype=subfeed_dtype)
  File "/home/hanco/anaconda3/lib/python3.7/site-packages/numpy/core/_asarray.py", line 85, in asarray
    return array(a, dtype, copy=False, order=order)
TypeError: int() argument must be a string, a bytes-like object or a number, not 'NoneType'

첫째, gstreamer 발신자와 수신자를 작성하려고했습니다.

gstreamer_sender.py :

import socket
import numpy as np
import cv2 as cv


addr = ("127.0.0.1", 5655)
buf = 512
width = 640
height = 480
cap = cv.VideoCapture("/home/hanco/Desktop/duckduck.mp4")
cap.set(3, width)
cap.set(3, height)
code = 'start'
code = ('start' + (buf - len(code)) * 'a').encode('utf-8')


if __name__ == '__main__':
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    while(cap.isOpened()):
        ret, frame = cap.read()
        if ret:
            s.sendto(code, addr)
            data = frame.tostring()
            for i in range(0, len(data), buf):
                s.sendto(data[i:i+buf], addr)
            # cv.imshow('send', frame)
            # if cv.waitKey(1) & 0xFF == ord('q'):
                # break
        else:
            break
    # s.close()
    # cap.release()
    # cv.destroyAllWindows()

gstreamer_receiver.py :

import socket
import numpy as np
import cv2 as cv


addr = ("127.0.0.1", 5600)
buf = 512
width = 640
height = 480
code = b'start'
num_of_chunks = width * height * 3 / buf

if __name__ == '__main__':
    s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    s.bind(addr)
    chunk, _ = s.recvfrom(buf)
    chunk.startswith(code)
    start = True
    while True:
        chunks = []
        while len(chunks) < num_of_chunks:
            chunk, _ = s.recvfrom(buf)
            if start:
                chunks.append(chunk)

        byte_frame = b''.join(chunks)

        frame = np.frombuffer(byte_frame, dtype=np.uint8).reshape(width, height, 3)

        cv.imshow('recv', frame)
        if cv.waitKey(1) & 0xFF == ord('q'):
            break

    s.close()
    cv.destroyAllWindows()

잘 작동하고 포트만 변경하여 가제보에서 영상을받을 수 있다는 것을 깨달았습니다. Gazebo 기본 포트는 5600 입니다. 하지만 작동하지 않았습니다.

위의 코드를 사용하여 여기에 구현하고 싶습니다.

cap = cv2.VideoCapture(GSTREAMEAR_VIDEO_INPUT)

이 줄에 오류가 있습니다.

          feed_dict={image_tensor: image_np_expanded})
      # Visualization of the results of a detection.
      vis_util.visualize_boxes_and_labels_on_image_array(
          image_np,
          np.squeeze(boxes),
          np.squeeze(classes).astype(np.int32),
          np.squeeze(scores),
          category_index,
          use_normalized_coordinates=True,
          line_thickness=8)
Bozkurthan

다음 코드는 오류없이 실행 중입니다.

# Read video
video = cv2.VideoCapture("udpsrc port=5600 ! application/x-rtp,payload=96,encoding-name=H264 ! rtpjitterbuffer mode=1 ! rtph264depay ! h264parse ! decodebin ! videoconvert ! appsink", cv2.CAP_GSTREAMER);

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

OpenCV의 VideoCapture 비디오에서 알파 채널 삭제

브라우저에서 Python OpenCV 비디오 형식 재생

OpenCV 및 Python 멀티 스레딩-VideoCapture 객체 내에서 찾기

Python에서 GStreamer 비디오 / 오디오를 매끄럽고 반복적으로 만들기

python-opencv에서 비디오 차원 가져 오기

OpenCV 비디오 개체 용 Python에서 압축 품질 지정

Python에서 VideoCapture opencv에서 특정 프레임 가져 오기

VideoCapture를 사용하여 OpenCV + Python에서 비디오를 읽거나 재생할 수 없음

OpenCV (Python) 비디오 서브 플롯

Python은 비디오 opencv에 오디오 추가

Python에서 UDP를 통해 정수 받기

Python OpenCV에서 비디오를 저장하는 방법

Python에서 OpenCV로 비디오 자르기 (Mac)

OpenCV Gstreamer에서 gstreamer UDP 스트림을 수신 할 수 없습니다.

Python OpenCV에서 잘린 프레임 비디오 만들기

OpenCV 및 Python에서 비디오 스트림의 대비 및 밝기 제어

OpenCV 4.0-VideoCapture에서 캡처 대기

gstreamer에서 오디오 및 비디오를 mux하는 방법

Gstreamer udp 서버

비디오 오버레이 기능에 해당하는 GStreamer #

Python 및 OpenCV-특정 지점에서 비디오의 지속 시간 가져 오기

Python의 CrossbarServer에서 Arduino로부터 UDP 패킷 받기

OpenCV (Linux, Python)에서 비디오 저장

OpenCV (Python)에서 비디오를 열 수 없습니다.

OpenCV (Python)에서 비디오 읽기

Python OpenCV 비디오 작가

GStreamer + OpenCV 비디오 처리 문제

Python openCV의 각 프레임에서 비디오에서 경과 시간 얻기

웹캠용 파이썬에서 GStreamer를 사용하여 Opencv 비디오 캡처 프레임 스트리밍

TOP 리스트

  1. 1

    ImageJ-히스토그램 빈을 변경할 때 최대, 최소 값이 변경되는 이유는 무엇입니까?

  2. 2

    상황에 맞는 메뉴 색상

  3. 3

    Excel : 합계가 N보다 크거나 같은 상위 값 찾기

  4. 4

    Oracle VirtualBox-설치를 위해 게스트를 부팅 할 때 호스트 시스템이 충돌 함

  5. 5

    ExecuteNonQuery- 연결 속성이 초기화되지 않았습니다.

  6. 6

    Cassandra에서 버전이 지정된 계층의 효율적인 모델링

  7. 7

    원-사각형 충돌의 충돌 측면을 찾는 문제

  8. 8

    Matlab의 반복 Sortino 비율

  9. 9

    Apache POI를 사용하여 xlsx를 읽는 동안 주 스레드의 NoSuchMethodError

  10. 10

    Android에서 Drawable을 int로 또는 그 반대로 변환하는 방법

  11. 11

    어떻게 같은 CustomInfoWindow 다른 이벤트를 할 수 있습니다

  12. 12

    openCV python을 사용하여 텍스트 문서에서 워터 마크를 제거하는 방법은 무엇입니까?

  13. 13

    JQuery datepicker 기능이 인식되지 않거나 새 프로젝트에서 작동하지 않음

  14. 14

    PyCharm에서 프로젝트를 제거하는 방법은 무엇입니까?

  15. 15

    regedit에서 방금 내 보낸 Windows 레지스트리 가져 오기 문제

  16. 16

    C ++ VSCode에서 같은 줄에 중괄호 서식 지정

  17. 17

    Python 사전을 사용하는 동안 "ValueError : could not convert string to float :"발생

  18. 18

    자바 스크립트로 duolingo 형 문장 연습을 개발 중입니다. 구현했지만 더 개선이 필요합니다

  19. 19

    react-redux 저장소의 상태 변수는 console.log 후에 정의되지 않습니까?

  20. 20

    cURL 명령은 git bash에서는 작동하지만 cmd 및 powershell에서는 작동하지 않습니다.

  21. 21

    JavaFX : TilePane을 중앙에 배치하고 TilePane 자식을 왼쪽에서 오른쪽으로 배치하는 방법은 무엇입니까?

뜨겁다태그

보관