wxpython + opencv 사용하여 ip camera 영상 출력미분류2016. 5. 28. 20:18
Table of Contents
반응형
opencv 3.0 부터는 cv 모듈이 제거 된거 같습니다.. 그래서 기존 코드는 동작안될듯 합니다..
대신 사용할 수 있는 코드를 찾았습니다..
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | import cv2 import urllib import numpy as np stream=urllib.urlopen('http://plazacam.studentaffairs.duke.edu/mjpg/video.mjpg') bytes='' while True: bytes+=stream.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:] i = cv2.imdecode(np.fromstring(jpg, dtype=np.uint8), 0) cv2.imshow('i',i) if cv2.waitKey(1) ==27: exit(0) | cs |
출처
http://stackoverflow.com/questions/21702477/how-to-parse-mjpeg-http-stream-from-ip-camera
아래는 기존 코드 입니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | # -*- coding: utf-8 -*- import wx import cv2 import cv2.cv as cv import urllib2 from cStringIO import StringIO import PIL.Image as pil url="http:⁄⁄192.168.0.8⁄snapshot.cgi?user=admin&pwd=" class ShowCapture(wx.Panel): def __init__(self, parent, fps=15): wx.Panel.__init__(self, parent) img_file = urllib2.urlopen(url) im = StringIO(img_file.read()) source = pil.open(im).convert("RGB") self.bitmap = cv.CreateImageHeader(source.size, cv.IPL_DEPTH_8U, 3) cv.SetData(self.bitmap, source.tostring()) cv.CvtColor(self.bitmap, self.bitmap, cv.CV_RGB2BGR) width = self.bitmap.width; height = self.bitmap.height; wxImage = wx.EmptyImage(width, height) cv_ImageBuf = cv.CreateImage ((width, height), cv.IPL_DEPTH_8U, 3) cv.CvtColor(self.bitmap, cv_ImageBuf, cv.CV_BGR2RGB); wxImage.SetData(cv_ImageBuf.tostring()) self.bmp2 = wxImage.ConvertToBitmap() self.timer = wx.Timer(self) self.timer.Start(1000.⁄fps) self.Bind(wx.EVT_PAINT, self.OnPaint) self.Bind(wx.EVT_TIMER, self.NextFrame) def OnPaint(self, evt): dc = wx.BufferedPaintDC(self) dc.DrawBitmap(self.bmp2, 0, 0) def NextFrame(self, event): img_file = urllib2.urlopen(url) im = StringIO(img_file.read()) source = pil.open(im).convert("RGB") self.bitmap = cv.CreateImageHeader(source.size, cv.IPL_DEPTH_8U, 3) cv.SetData(self.bitmap, source.tostring()) cv.CvtColor(self.bitmap, self.bitmap, cv.CV_RGB2BGR) width = self.bitmap.width; height = self.bitmap.height; wxImage = wx.EmptyImage(width, height) cv_ImageBuf = cv.CreateImage ((width, height), cv.IPL_DEPTH_8U, 3) cv.CvtColor(self.bitmap, cv_ImageBuf, cv.CV_BGR2RGB); wxImage.SetData(cv_ImageBuf.tostring()) self.bmp2 = wxImage.ConvertToBitmap() self.Refresh() def main(): app = wx.App() frame = wx.Frame(None) cap = ShowCapture(frame) frame.Show() app.MainLoop() capture.release() if __name__ == '__main__': main() | cs |
참고
http://stackoverflow.com/questions/11253820/python-urllib2-and-opencv
http://mvlab.blogspot.kr/2007/05/day-record-2007-may-15.html
반응형
'미분류' 카테고리의 다른 글
유튜브 채널 모바일 주소 확인 방법 (0) | 2023.10.22 |
---|---|
유튜브 영어 자막 다운로드하는 방법 (31) | 2021.05.17 |
Genuino 101와 라즈베리파이3를 주문했습니다. (0) | 2016.04.08 |
STM32F4 discovery에 freeRTOS 올려보기 (0) | 2015.01.12 |
stm32f4 discovery보드를 Ubuntu linux에서 시작하기 (1) | 2015.01.11 |
시간날때마다 틈틈이 이것저것 해보며 블로그에 글을 남깁니다.
블로그의 문서는 종종 최신 버전으로 업데이트됩니다.
여유 시간이 날때 진행하는 거라 언제 진행될지는 알 수 없습니다.
영화,책, 생각등을 올리는 블로그도 운영하고 있습니다.
https://freewriting2024.tistory.com
제가 쓴 책도 한번 검토해보세요 ^^
@webnautes :: 멈춤보단 천천히라도
그렇게 천천히 걸으면서도 그렇게 빨리 앞으로 나갈 수 있다는 건.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!