Python OpenCV cv.WaitKey正确地在Ubuntu模256映射上回吐奇怪的输出

Mer*_*ing 9 python opencv modulo

我正在使用OpenCV 2.2运行Ubuntu 11.10(联想T400)(我相信导入是作为cv导入cv2.cv完成的).如果我只是'导入cv',也会发生这个问题.

我最近开始遇到这个问题,这有点奇怪.我不知道我做了什么重要的事情,自从它开始发生以来我已经重新启动了.我安装了几个程序,但我不认为这会影响到这一点.

当我使用人工图像显示(只是一个黑色图像)时,我尝试轮询cv.WaitKey(10).它吐回垃圾.

这是我的OpenCV代码:

import cv2.cv as cv
import time

cv.NamedWindow("camera", 1)
img = cv.CreateImage((400,400), 8, 3)
valkeys = range(1,255)
f = open('/home/andrew/webuploads/keyboardtest', 'wb')
while True:
    cv.ShowImage("camera", img)
    k = cv.WaitKey(10)
    if k is -1:
        pass
    else:
        print 'writing %s' %str(k)
        f.write((str(k)+' '))

f.close()
Run Code Online (Sandbox Code Playgroud)

这是我从程序中得到的输出:

1048678 1048676 1048673 1048691 1048676 1048678 1048689 1048695 1048677 1048688 1048687 1048681 1048677 1048677 1048695 1048624 1048633 1048690 1048633 1048624 1048695 1048677 1048690 1048624 1048633 1048681 1048677 1048681 1048688 1048687 1048677 1048681 1048692 1048688 1048681 1048688 1048687 1048681 1048681 1048688 1048687 1048585 1048687 1048681 1048688 1048687 1048681 1114085 1179728 1179727 1179721 1179728 1179721 1245153 1245289 1179727 1179721 1179727 1179721 1179728 1179727 1245155 1441865 1179728 1179727 1179721 1179728 1179727 1179721 1179728 1179727 1179718 1179721 1179716 1179728 1179727 1179731 1179721 1179713 1179728 1179727 1179687 1179723 1179716 1179736 1179724 1179715 1179734 1179725 1179692 1179736 1179738 1179725 1179715 1179734 1179692 1245155 1441859

现在我可以模拟256个这些数字并获得一些明智的结果(只是尝试过它,它正确地识别了我的所有键),但是,为什么我需要这样做?它之前没有做任何事情(print chr(k)会给我一封信).有人有主意吗?

TH.*_*TH. 10

模数有效,因为有关密钥的信息存储在返回值的最后8位中.A k & 255还将选择最后8位:

>>> k = 1048678
>>> chr(k & 255)
'f'
Run Code Online (Sandbox Code Playgroud)

在Python中,chr(n)将返回与n对应的字符.不幸的是,OpenCV文档没有提供有关此问题的信息.