我从Nao机器人的相机中获取图像信息,但信息存储在字符串。我的其思想是获取角色的acsii,并将acsii转换为是的,但是我失败了。我的想法错了吗?还是我在这个过程中犯了一个错误正在成形错误是源图像必须有1、3或4个通道在工作简历图片. 代码如下:
import sys
import cv2 as cv
from naoqi import ALProxy
import vision_definitions
from numpy import array
class OpenCVModule():
def __init__(self, IP, PORT, CameraID):
print CameraID
self._videoProxy = None
self._cameraID = CameraID
self._resolution = vision_definitions.kQVGA # 320 * 240
self._colorSpace = vision_definitions.kBGRColorSpace
self._fps = 20
self._imgClient = ""
self._imgData = None
cv.namedWindow("Camera_OpenCV", 0)
self._registerImageClient(IP, PORT)
def _registerImageClient(self, IP, PORT):
self._videoProxy = ALProxy("ALVideoDevice", IP, PORT)
self._imgClient = self._videoProxy.subscribeCamera("OpenC", 0, self._resolution, self._colorSpace,self._fps)
print self._imgClient
def _unregisterImageClient(self):
if self._imgClient != "":
self._videoProxy.unsubscribe(self._imgClient)
def showImage(self):
while True:
#try:
self._imgData = self._videoProxy.getImageRemote(self._imgClient)
one=[[[] for i in range(240)] for j in range(3)]
o=0
k=0
j=0
#self._img=array(self._imgData[6]).astype(int)
for i in range(len(self._imgData[6])):
one[o][k].append(ord(self._imgData[6][i]))
j+=1
if j==320:
j=0
k+=1
if k==240:
k=0
o+=1
self._img=array(one).astype(int)
cv.imshow("Camera_OpenCV2", self._img)
#except KeyboardInterrupt:
#break
#except:
#pass
if cv.waitKey(20) == 27:
break
cv.DestroyAllWindows()
self._unregisterImageClient()
if __name__ == '__main__':
IP = "192.168.1.105"
PORT = 9559
CameraID = 0
if len(sys.argv) > 1:
IP = sys.argv[1]
if len(sys.argv) > 2:
CameraID = int(sys.argv[2])
myWidget = OpenCVModule(IP, PORT, CameraID)
myWidget.showImage()
我找到了解决办法。Image.frombytes文件是一种有效的方法。 这是密码。你知道吗
相关问题 更多 >
编程相关推荐