小编Bri*_*ion的帖子

重新采样H264视频以降低帧速率,同时保持高图像质量

这是感兴趣的视频的mplayer输出:

br@carina:/tmp$ mplayer foo.mov 
mplayer: Symbol `ff_codec_bmp_tags' has different size in shared object, consider re-linking
MPlayer 1.0rc4-4.5.2 (C) 2000-2010 MPlayer Team
mplayer: could not connect to socket
mplayer: No such file or directory
Failed to open LIRC support. You will not be able to use your remote control.

Playing foo.mov.
libavformat file format detected.
[lavf] stream 0: video (h264), -vid 0
[lavf] stream 1: audio (aac), -aid 0, -alang eng
VIDEO:  [H264]  1280x720  24bpp  59.940 fps  2494.2 kbps (304.5 kbyte/s) …
Run Code Online (Sandbox Code Playgroud)

video ffmpeg mencoder transcoding mplayer

35
推荐指数
2
解决办法
7万
查看次数

将原始OpenCV图像管道传输到FFmpeg

这是使用OpenCV的python绑定读取网络摄像头的一个相当简单的例子:

'''capture.py'''
import cv, sys
cap = cv.CaptureFromCAM(0)                    # 0 is for /dev/video0
while True :
    if not cv.GrabFrame(cap) : break
    frame = cv.RetrieveFrame(cap)
    sys.stdout.write( frame.tostring() )
Run Code Online (Sandbox Code Playgroud)

现在我想将输出管道输出到ffmpeg,如下所示:

$ python capture.py | ffmpeg -f image2pipe -pix_fmt bgr8 -i - -s 640x480 foo.avi

可悲的是,我无法将ffmpeg魔术咒语完全正确而且失败了

  libavutil     50.15. 1 / 50.15. 1
  libavcodec    52.72. 2 / 52.72. 2
  libavformat   52.64. 2 / 52.64. 2
  libavdevice   52. 2. 0 / 52. 2. 0
  libavfilter    1.19. 0 /  1.19. 0
  libswscale     0.11. 0 /  0.11. …

python linux opencv ffmpeg pipe

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

你怎么告诉pyximport使用cython -cplus选项?

pyximport非常方便,但我无法弄清楚如何让它为Cython使用C++语言选项.从命令行运行cython --cplus foo.pyx.你如何通过pyximport获得相同的效果?谢谢!

c++ python cython

15
推荐指数
2
解决办法
3092
查看次数

获取嵌入式Python运行时以使用当前活动的virtualenv

我大量使用virtualenv来将我的开发环境与系统范围的Python安装隔离开来.使用virtualenv的典型工作流程涉及运行

source /path/to/virtualenv/bin/activate
设置Python执行隔离运行时所需的环境变量.确保我的Python可执行文件使用当前活动的virtualenv就像设置shebang一样简单
#!/usr/bin/env python

最近,我一直在编写一些嵌入Python运行时的C代码.我似乎无法弄清楚如何让嵌入式运行时使用当前活动的virtualenv.谁有一个很好的例子可以分享?

谢谢!

python virtualenv

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

MDL + jQuery验证集成:mdl-radio__button验证需要解决方法

看起来像是jQuery的jQuery.validate的正常用例已经出错了.看到这个要点.

这很好用:

<h1>Without MDL</h1>
<form id="foo">
  <input type="radio" name="bar" value="1" /> 1
  <input type="radio" name="bar" value="2" /> 2
<input type="submit" />
</form>
<script>
     $(function() {
         $('#foo').validate({
             rules: {
                 "bar": {
                     required: true
                 },
             },
             errorPlacement: function(error, element) {
                 console.log(element);
             }
         });
     });
</script>
Run Code Online (Sandbox Code Playgroud)

这没有任何作用:

<h1>With MDL</h1>
<form id="zha">
    <label for="baz__1" class="mdl-radio mdl-js-radio">
        <input type="radio" name="baz" value="1" id="baz__1" class="mdl-radio__button" /> 1
    </label>
    <label for="baz__2" class="mdl-radio mdl-js-radio">
        <input type="radio" name="baz" value="2" id="baz__2" class="mdl-radio__button" /> 2
    </label>
    <input type="submit" …
Run Code Online (Sandbox Code Playgroud)

jquery jquery-validate material-design-lite

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

在Numpy中设置*default*数据顺序(C vs. Fortran)

我正在将一些MATLAB代码移植到Numpy.此任务包括从某些C++代码中剥离MEX并将其替换为对Numpy的C-API的等效调用.一个问题是MEX代码将传入数据视为Fortran有序,因为这是MATLAB对其数组进行排序的方式.另一方面,Numpy默认使用C排序.

如果没有完全重写用于C排序的MEX代码,我可以:

  • (A)对进入C代码的数组进行重新排序,.copy('F')然后重新排序.copy('C')
  • (B)弄清楚如何通过从一开始就以Fortran顺序执行所有操作来"模仿"MATLAB.

选项A - 目前已实施 - 工作得很好,但非常低效.有谁知道如何使选项B工作?

python matlab numpy mex

11
推荐指数
1
解决办法
2163
查看次数

Qt的QGraphicsItem中的事件和信号:这**应该如何工作?

与Qt中的其他原语一样,QGraphicsItems可以处理鼠标事件等.甜!现在说我需要将一个QGraphicsItem上的事件传播到同一场景中的其他QGraphicsItems.我可以想到两种方法可以解决这个问题:


(A)天真的方法 - 信号

概念:将兄弟QGraphicsItems与信号连接在一起.QGraphicsItem上的事件处理程序调用emit(),以唤起对其他QGraphicItem的协调响应.这遵循整个Qt框架中建立的一般设计模式.

实现:由于我没有完全掌握的原因,QGraphicsItems不能发出()信号.有人建议,也可以从QGraphicsObject继承的派生类可以解决这个问题.在我看来,在QGraphicsItems上排除emit()可能是Qt开发人员的有意设计决策,因此,多重继承可能不是正确的解决方案.

(B)容器级事件处理

概念: QGraphicsItems始终存在于QGraphicsScene类型的容器的上下文中.(A)中的事件在QGraphicsItem级别处理,而是由继承自QGraphicsScene的对象处理.该对象还实现了用于协调兄弟QGraphicsItem之间响应的逻辑.

实现: QGraphicsScene绝对有能力处理事件,否则将导致QGraphicsItems.QGraphicsScene还提供itemsAt()方法,用于确定其中的哪些内容受位置事件影响,如鼠标单击.尽管如此,在容器类中建立相当大的逻辑以便在容器之间进行协调操作,这感觉就像是无法正确封装.不好的做法?也许,但这似乎是至少在一个官方例子中完成的方式.


问题

  1. 什么是正确的解决方案?如果不是A或B,那么它是否是我没有想到的其他东西?
  2. 为什么Qt devs允许QGraphicsItems接收事件但不发送信号?这似乎是整个框架中使用的设计模式的一个主要例外.
  3. 此问题的扩展是QGraphicsItems和高阶容器类之间的通信,如主应用程序.这意味着如何解决?

qt qt4 pyqt4

11
推荐指数
1
解决办法
5527
查看次数

绑定失败与objcopy --redefine-syms

前提条件

第三方提供了fooapp使用共享对象的C++可执行文件libfoo.so.该库还带有一个标题,foo.hpp以便开发人员可以构建其他应用程序:

/* foo.hpp */
namespace foo {
  void bar(int a, int b);
  // More code below here <--- NOTE!!!
}
Run Code Online (Sandbox Code Playgroud)

成功的例子

这是一个LD_PRELOAD基于标准的功能插入工作流程.

首先,我编写自己的库版本myfoo.cpp,完全反映了以下部分 foo.hpp:

/* myfoo.hpp */
# include <ofstream>
namespace foo {
  void bar(int a, int b) {
    std::cout << a << "," << b << std::endl;
  }
  // NOTHING below here <-- NOTE!!!
}
Run Code Online (Sandbox Code Playgroud)

然后我编译我的库libmyfoo.so,看看以下内容:

$ nm libfoo.so -C | fgrep bar
0000000000021fc0 …
Run Code Online (Sandbox Code Playgroud)

c++ ld objcopy nm ld-preload

11
推荐指数
1
解决办法
459
查看次数

使用Matplotlib注释注释

我目前在Matplotlib中做一些"花哨"的注释:

import matplotlib.pyplot as plt
ax = plt.subplot(111)
plt.axis('equal')
src_pos, dst_pos = (0, 0), (1, 1)
src_patch = plt.Rectangle(src_pos, .25, .25, color='r')
ax.add_patch(src_patch)
dst_patch = plt.Circle(dst_pos, .25, color='b')
ax.add_patch(dst_patch)
arrowprops = dict(
    arrowstyle='<-', 
    connectionstyle='arc3,rad=0.3', 
    patchA=dst_patch, 
    patchB=src_patch, 
    shrinkA=1, 
    shrinkB=1)
ant = ax.annotate('', src_pos, dst_pos, arrowprops=arrowprops)
plt.draw()
plt.show()
Run Code Online (Sandbox Code Playgroud)

现在我想在箭头旁边添加一些文字.输出应如下所示:

在此输入图像描述

我对一般解决方案感兴趣,其中文本放置是根据渲染器选择的箭头路径以编程方式选择的.例如,

  • 文本应适当放置的未知值src_posdst_pos.
  • 无论如何arrowprops设置和使用哪个文本,都应该适当放置文本connectionstyle.
  • 宁愿plt.draw()在剧本结束之前不必打电话.

谢谢!

python matplotlib

9
推荐指数
1
解决办法
1972
查看次数

设计Boost图库中的捆绑属性

我正在从Python(networkx)和C++(BGL)中移植一些图形代码.在我的Python代码中,图的顶点和边是实现已建立接口的客户端定义的对象; 我继续在他们身上调用一堆方法.一切都好.

天真地看来,BGL似乎是为了支持具有"捆绑属性"的类似设计模式.这些基本上允许通过传递某些模板参数来定义顶点和边的自定义类型:

adjacency_list<OutEdgeList, VertexList,
               Directed, VertexProperties,
               EdgeProperties, GraphProperties,
               EdgeList>
Run Code Online (Sandbox Code Playgroud)

这里的自定义顶点和边类型由VertexProperties和给出EdgeProperties.

在这个端口上工作时我注意到一些事情让我觉得BGL的捆绑属性接口实际上只是为了支持(或多或少)不可变类型:

  • 边和顶点"描述符"

    如果你把某些东西放到图表中,你会得到一个"描述符",你必须用它来从那里引用它.有边和顶点的描述符,它们是图中的"键" - 实现为不可变的.因此,如果您有一个顶点并且想要找到相邻顶点,则必须(a)获取当前顶点描述符,(b)使用BGL方法查找其邻居的描述符,最后(c)引用每个邻居通过各自的描述符.

    所有这些簿记的最终结果是显然需要额外的容器 - std::map比如说 - 提供从顶点和边缘(再次,类型VertexPropertyEdgeProperty)到它们的描述符的反向查找.

  • "BGL并不意味着存储指针."

    我在一个类似的SO问题中发现了这个主张,但是无法在任何地方的Boost文档中对其进行验证.从随后的讨论中我可以推测,约束实际上可能更强一些:"BGL并不意味着直接引用堆." 但这似乎并不完全合理,因为容器类型是可配置的(OutEdgeList以及VertexList上面的)和默认的标准内容,如矢量.

我是一个BGL的n00b和我无法理解有什么打算捆绑特性.(坦率地说,我觉得编程模型有点不知所措 - "属性","概念","特征","描述符",AHHHH!)问题:

  1. 不要BGL图有效地支持复杂和可能堆结合的类型VertexPropertyEdgeProperty?或者这些是不可变数据的轻量级容器?

  2. 如果是前者,有没有办法绕过所有描述符簿记?

  3. 如果是后者,处理大型复杂事物的"正确方法"是什么,我们可能想要坚持BGL图?

c++ boost graph boost-graph

8
推荐指数
1
解决办法
937
查看次数