相关疑难解决方法(0)

如何防止C共享库在python中的stdout上打印?

我使用python lib导入一个在stdout上打印的C共享库.我想要一个干净的输出,以便与管道一起使用或重定向文件.打印是在python之外的共享库中完成的.

一开始,我的方法是:

# file: test.py
import os
from ctypes import *
from tempfile import mktemp

libc = CDLL("libc.so.6")

print # That's here on purpose, otherwise hello word is always printed

tempfile = open(mktemp(),'w')
savestdout = os.dup(1)
os.close(1)
if os.dup(tempfile.fileno()) != 1:
    assert False, "couldn't redirect stdout - dup() error"

# let's pretend this is a call to my library
libc.printf("hello world\n")

os.close(1)
os.dup(savestdout)
os.close(savestdout)
Run Code Online (Sandbox Code Playgroud)

第一种方法是半工作:
- 由于某种原因,它在移动stdout之前需要一个"print"语句,否则总是打印hello word.因此,它将打印一个空行而不是库通常输出的所有模糊.
- 更令人讨厌,重定向到文件时失败:

$python test.py > foo && cat foo

hello world …
Run Code Online (Sandbox Code Playgroud)

python ctypes python-2.x

41
推荐指数
3
解决办法
1万
查看次数

在OpenCV,Python中使用关闭"X"按钮关闭视频窗口

我正在使用Python中的OpenCV显示来自摄像头的实时视频.这是代码:

capture = cv.CaptureFromCAM(0)
if capture:
    cv.NamedWindow("Live Video", cv.CV_WINDOW_AUTOSIZE)
    frame = cv.QueryFrame(capture)
    if frame:
        cv.ShowImage("Live Video", frame)    
        cv.WaitKey(0)

cv.DestroyWindow("Live Video")
Run Code Online (Sandbox Code Playgroud)

现在,我只能通过按"esc"关闭我的视频窗口,但是当我点击我的窗口的关闭"X"按钮时没有任何反应.有没有办法让这项工作?

python video opencv

12
推荐指数
3
解决办法
1万
查看次数

如何检查opencv窗口是否已关闭

如何检查opencv窗口是否已关闭?

我想要做:

cvNamedWindow("main", 1);

while(!cvWindowIsClosed("main"))
{
    cvShowImage("main", myImage);   
}
Run Code Online (Sandbox Code Playgroud)

但这些没有这样的cvWindowIsClosed(...)函数!

c c++ opencv

7
推荐指数
1
解决办法
6781
查看次数

标签 统计

opencv ×2

python ×2

c ×1

c++ ×1

ctypes ×1

python-2.x ×1

video ×1