OpenCV初始化完成,opengl支持可用

时间:2015-02-10 12:57:33

标签: opencv

我正在python上编写一个Frame服务器程序,它从java客户端接收帧信息。它实际上是手机上的一个Android代码,它将相机帧流式传输到python服务器。

然后python服务器处理框架,这要归功于opencv,它应该通常显示一个窗口,其中包含手机摄像头所看到的灰度表示。

就这样吧 手机摄像头=>手机上的java-android代码(使用java套接字)=> python socket receiver => opencv窗口显示相机正在看什么。

但是,这不显示任何opencv窗口并返回init done opengl support available

我的帧是176x144(像素总数是25344)。这些像素从Java发送到python。

我的java套接字在与(android)UI线程相同的线程上发送此信息我应该为此实现异步代码,但我是一个菜鸟。

我怀疑性能可能是一个问题,但我不知道该怎么做,因为没有明显的错误。

但是,我真的想要一种方法来查看相机从opencv窗口看到的内容。

我的代码如下。谢谢你的帮助。

import socket
import time
import cv2
import numpy as np
from struct import unpack

def showImage(windowName,array):
    cv2.imshow(windowName,array)

def server(host,port):
    s=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
    s.bind((host,port))
    s.listen(5)
    c,addr=s.accept()
    while(1):    
        data=c.recv(4)
        width=unpack('>I', data[0:4])[0]
        data2=c.recv(4)
        height=unpack('>I', data2[0:4])[0]
        totalpixels=width*height
        data3=recvall(c,totalpixels)
        frame=np.fromstring(data3,dtype=np.uint8)   
        frame=frame.reshape(height,width)
        cv2.setUseOptimized(True)
        cv2.namedWindow("Driver", cv2.WINDOW_NORMAL)
        cv2.imshow("Driver",frame)
    cv2.waitKey(0)
    cv2.destroyAllWindows()



    return data
def recvall(sock,n):
    data=''
    while len(data)<n:
        chunk=sock.recv(n-len(data))
        if not chunk:
            return None
        data+=chunk

    return data


if __name__=="__main__":
        server('localhost',9999)

0 个答案:

没有答案