def write_frame(client, frame, boundary='1337'): ret = cv.EncodeImage('.jpeg', cv.fromarray(frame)) image_bytes = bytearray(np.asarray(ret)) client.send("Content-type: image/jpeg\r\n") client.send("Content-Length: %d\r\n\r\n" % len(image_bytes)) client.send(image_bytes) client.send("\r\n--" + boundary + "\r\n")
def takePic(self, split): img = cv.QueryFrame(self.capture) jpgstring = cv.EncodeImage(".jpg", img).tostring() # jpgstring = zlib.compress(jpgstring) jpglen = len(jpgstring) for i in range(split - 1): self.splittedStr[i] = jpgstring[jpglen / split * i:jpglen / split * (i + 1)] self.splittedStr[split - 1] = jpgstring[jpglen / split * (split - 1):] cv.WaitKey(30) self.frames.append(self.splittedStr)
def do_tarfile_save(self, tf): """ Write images and calibration solution to a tarfile object """ def taradd(name, buf): s = StringIO.StringIO(buf) ti = tarfile.TarInfo(name) ti.size = len(s.buf) ti.uname = 'calibrator' ti.mtime = int(time.time()) tf.addfile(tarinfo=ti, fileobj=s) ims = [("left-%04d.png" % i, im) for i, (_, im) in enumerate(self.db)] for (name, im) in ims: taradd(name, cv.EncodeImage(".png", im).tostring()) taradd('ost.txt', self.ost())
def convert_tif_to_png(self, buffer): if not cv: msg = """[PILEngine] convert_tif_to_png failed: opencv not imported""" logger.error(msg) return buffer # can not use cv2 here, because ubuntu precise shipped with python-opencv 2.3 which has bug with imencode # requires 3rd parameter buf which could not be created in python. Could be replaced with these lines: # img = cv2.imdecode(numpy.fromstring(buffer, dtype='uint16'), -1) # buffer = cv2.imencode('.png', img)[1].tostring() mat_data = cv.CreateMatHeader(1, len(buffer), cv.CV_8UC1) cv.SetData(mat_data, buffer, len(buffer)) img = cv.DecodeImage(mat_data, -1) buffer = cv.EncodeImage(".png", img).tostring() mime = self.get_mimetype(buffer) self.extension = EXTENSION.get(mime, '.jpg') return buffer
import cv2.cv as cv import cv2 import socket if _name_ == "_main_": udp =socket.socket(soclet.AF_INET,socket.SOCK_DGRAM) capture =cv.CaptureFromCAM(0) cv.NamedWindow("ClientCAM",1) cv.SetCaptureProperty(capture,cv.CV_CAP_PROP_FRAME_WIDTH,320) cv.SetCaptureProperty(capture,cv.CV_CAP_PROP_FRAME_HEIGHT,240) while True: img =cv.QueryFrame(capture) jpgstring =cv.EncodeImage(".jpeg",img).tostring() cv.ShowImage("ClientCAM",img) udp.sendto(jpgstring,("198.168.0.140",#port#)) if cv.WaitKey(10) ==27: break cv.DestroyAllWindows() udp.close()
#!/usr/bin/env python # -*- coding: utf-8 -*- import cv2.cv as cv import cv2 import socket UBU_HOST_NAME = 'gaubutwo.local'#ラズパイUDP受信ホスト名 UBU_HOST_PORT = 4001 #ラズパイUDP受信ポート番号 if __name__ == "__main__": udp = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) #cv.NamedWindow("ClientCAM", 1) capture = cv.CaptureFromCAM(0)#キャプチャに使うカメラの選択 cv.SetCaptureProperty(capture,cv.CV_CAP_PROP_FRAME_WIDTH,320)#キャプチャする画像のサイズ cv.SetCaptureProperty(capture,cv.CV_CAP_PROP_FRAME_HEIGHT,240) while True: img = cv.QueryFrame(capture)#画像のキャプチャ jpgstring = cv.EncodeImage(".jpeg", img).tostring()#UDPで送る為に画像をstringに変換 cv.ShowImage("ClientCAM", img) udp.sendto(jpgstring, (UBU_HOST_NAME, UBU_HOST_PORT))#画像の送信 if cv.WaitKey(10) == 27: break #エスケープキー(だったけ・・・・?)にて終了 cv.DestroyAllWindows()#事後処理 udp.close()
def _takeFrameUSB(self): frame = cv.QueryFrame(self.capture) jpgString = cv.EncodeImage(".jpg", frame).tostring() return jpgString
def takeImage(self): img = cv.QueryFrame(self.capture) img = cv.EncodeImage(".jpg", img).tostring() return img
def _photo_base64(self): from cv2 import cv import cv2 import numpy img = cv.QueryFrame(self._camera) return base64.b64encode(cv.EncodeImage('.jpg', img).tostring())