小编Ana*_*ose的帖子

Moviepy 缩放效果需要调整

我想将剪辑缩放到某个尺寸,然后停止进一步缩放。换句话说,剪辑在达到特定大小后停止进一步增加其大小,如果剪辑开始从原始大小小得多的缩放到更大的版本,则效果会更好。我正在使用电影模块。使用以下代码,我可以逐步缩放剪辑,但很难弄清楚如何将剪辑从小到大增长,从而创建动画效果。非常感谢您提供的任何反馈。

import os
from moviepy.editor import *

screensize = (640,360)

clip = (ImageClip(img)
        .resize(height=screensize[1]*4)
        .resize(lambda t : 1+0.02*t)
        .set_position(('center', 'center'))
        .set_duration(10)
        )
Run Code Online (Sandbox Code Playgroud)

我很难弄清楚如何编写一个函数来使用moviepy的txtclip创建打字效果,这意味着剪辑中的字母将一个接一个地显示,创建一个流畅的打字机动画文本。Moviepy 得到了一些有用的类,例如 findObjects——它可以检测剪辑中的单个字母:

txtClip = TextClip('Cool effect',color='white', font="Amiri-Bold",
                   kerning = 5, fontsize=100)
cvc = CompositeVideoClip( [txtClip.set_pos('center')],
                        size=screensize, transparent=True)

letters = findObjects(cvc) # a list of ImageClips 

here is the link: http://zulko.github.io/moviepy/examples/moving_letters.html
Run Code Online (Sandbox Code Playgroud)

找到字母(字母剪辑)后,我想以这样一种方式加入它们,使它们一个接一个出现,看起来像打字机。

文档中已经有一些移动字母的例子,但是它们可能很有用。谢谢

python video animation moviepy

6
推荐指数
1
解决办法
3022
查看次数

合并重叠边界框的技术不起作用

我正在尝试使用 OpenCV (3.0) 和 Python 检测图像中的文本区域。到目前为止,我能够检测单个文本字符并在它们周围绘制边界框或矩形。我的最终目标是将单个文本字符合并到单词/文本行中,并最终合并到文本块或段落中。

我的方法是找到相邻的文本区域,然后在这些区域周围形成一个边界框。因此,在我的代码中,我稍微扩展了每个文本字符周围的边界框或矩形,以便它们彼此重叠,形成一串重叠的边界框。(请参考图片)。现在,我想根据所有边界框对之间的重叠率合并这些重叠的矩形以形成单个边界框。

我很难弄清楚如何将重叠的矩形合并为一个。在过去的 24 小时里,我尝试了不同的技术,但没有成功。其中有cv2.groupRectangles。我认为我们需要 cv2.cascade.detectMultiScale() 返回的矩形数组(即 rectList);我们还需要 haar 级联来检测图像中的对象(即在我们的例子中为矩形),并且“数据文件夹”中有许多 haar 级联,我很困惑在我的例子中使用哪一个(检测矩形)。

如果 cv2.groupRectangles 不适用于我的情况,那么我想知道什么可能是其他选项。如果您也遇到过类似的问题,欢迎分享。

在此输入图像描述

这是我的工作Python代码

import numpy as np
import cv2
im = cv2.imread('headintext.png')
grayImage = cv2.cvtColor(im,cv2.COLOR_BGR2GRAY)
# grayImage = cv2.imread('gates.jpg', cv2.IMREAD_GRAYSCALE)
# cv2.imwrite('gates.png', grayImage)
# cv2.imshow('image', grayImage)
# cv2.waitKey(0)
# cv2.destroyAllWindows()
_,thresh = cv2.threshold(grayImage, 150, 255, cv2.THRESH_BINARY_INV)
kernel = cv2.getStructuringElement(cv2.MORPH_CROSS,(3,3))
dilated = cv2.dilate(thresh, kernel, iterations = 1) # dilate
_,contours0,_ = cv2.findContours(dilated,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE) # get contours
contours = [cv2.approxPolyDP(cnt, 3, True) for cnt in …
Run Code Online (Sandbox Code Playgroud)

python opencv

5
推荐指数
0
解决办法
2128
查看次数

使元素可见并单击隐藏

我试图使元素#mask123在单击时可见或隐藏。默认情况下,该元素是隐藏的,但是当我单击它时,该元素变为可见。下列js在首次点击后即可使用,并且该元素变为可见。现在,我想单击相同的按钮,#menu-btn-toggle并且该元素切换到不可见模式,我无法使其工作。我在这里使用内联CSS。这是一个简单的案例,但是我对js的有限了解对我没有帮助。

   <div id="menu-btn">
      <a href="#" title="Menu" id="menu-btn-toggle" class="menu-icon-link" onclick="showMask();">
    </div>
Run Code Online (Sandbox Code Playgroud)

html代码

<div class="side-nav--mask">
    <div class="js-side-nav-mask liquid-container">
        <div id="mask123" class="liquid-child" style="visibility: hidden; top: 0px; left: 0px; opacity: 1;"></div>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

这是我的JS:

<script type="text/javascript">
    function showMask() {
        var node = document.getElementById('mask123')
        node.style.visibility = 'visible';
    }
</script>
Run Code Online (Sandbox Code Playgroud)

当我尝试以下情况时,它不起作用:

<script type="text/javascript">
    function showMask() {
        var node = document.getElementById('mask123')
        node.style.visibility = 'visible';
        if node.is(":visible") {
            node.style.visibility = 'hidden';
        }
    }
</script>
Run Code Online (Sandbox Code Playgroud)

html javascript

5
推荐指数
1
解决办法
5352
查看次数

尝试使用matplotlib绘制OpenCV的MSER区域

我正在使用OpenCV的MSER特征检测器来查找文本区域.使用以下Python代码,我可以检测文本(和一些非文本)并在每个字母表周围绘制多边形曲线.现在,我需要使用不同颜色的matplotlib来绘制这些文本(更具体地说,每个字母表).不同的颜色在这里很重要.我是matplotlib的新手,我无法弄清楚如何实现它.我寻求你的指导.我不需要完整的解决方案,但有些提示会有所帮助.

在此输入图像描述

import numpy as np
import cv2
import matplotlib.pyplot as plt #plt.plot(x,y) plt.show()

img = cv2.imread('TestText.png')
mser = cv2.MSER_create()

gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
vis = img.copy()

regions = mser.detectRegions(gray, None)
hulls = [cv2.convexHull(p.reshape(-1, 1, 2)) for p in regions]
cv2.polylines(vis, hulls, 1, (0, 255, 0)) 
# cv2.putText(vis, str('change'), (20, 20), cv2.FONT_HERSHEY_SIMPLEX, 2, (255, 0, 0))
# cv2.fillPoly(vis, hulls, (0, 255, 0))


# cv2.imwrite("test.png", vis)    
cv2.imshow('img', vis)
cv2.waitKey(0)
cv2.destroyAllWindows()
Run Code Online (Sandbox Code Playgroud)

python opencv matplotlib

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

python lambda如果/ else条件失败:'int'和'function'冲突

我正在尝试使用in-line,lambda函数来执行一些if/else条件,我在哪里得到"unsupported operand type(s) for +: 'int' and 'function'"错误.在这里,我试图将set_duration设置为1.5,除非它的第一个和最后一个数组迭代.你能看看并提供任何提示.期待.

for idx, string in enumerate(lines):


    duration = 10
    clips = []

    clips.append(ImageClip(os.path.join(folder,"gradient.png"))
                 .set_duration(lambda idx: 3 if (idx == 0 and lines[len(lines) - 1]) else 1.5)
                 )

    clips.append(ImageClip(os.path.join(folder,"image-{0}.png"))
                 .resize(width=800)
                 .set_duration(lambda idx: 3 if (idx == 0 and lines[len(lines) - 1]) else 1.5)
                 .margin(right=60, opacity=0)
                 .set_pos(("right","center"))
                 )

    clips.append(ImageClip(os.path.join(folder, "big-append.png"))
                 .resize(width=900)
                 .margin(left=60,opacity=0)
                 .set_duration(lambda idx: 3 if (idx == 0 and lines[len(lines) - 1]) else 1.5)
                 .set_pos(("left", "center"))
                 )



// rest of the code... …
Run Code Online (Sandbox Code Playgroud)

python

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

加速或减速影片剪辑

我正在尝试借助 Python 的 moviepy 模块来加速和/或减速影片剪辑,但我似乎无法正确解决它。该脚本运行非常顺利,没有任何错误,但我没有看到任何效果。可能是我的脚本错误,我无法检测到问题。寻求您的帮助/提示。我不需要完整的解决方案,任何提示都会有很大帮助。我已经研究这个解决方案有一段时间了,我想我应该在这里发布我的问题。任何帮助、提示、指导将不胜感激。谢谢。

from moviepy.editor import *
from moviepy.video.tools.drawing import color_split
import os

dir = os.path.split(os.path.realpath(__file__))[0]
img = os.path.join('tmp', 'stock.jpg')
folder = 'tmp'


def f_accel_decel(t, old_d, new_d, abruptness=1, soonness=1.0):
    """
    abruptness
      negative abruptness (>-1): speed up down up
      zero abruptness : no effect
      positive abruptness: speed down up down

    soonness
      for positive abruptness, determines how soon the
      speedup occurs (0<soonness < inf)
    """

    a = 1.0+abruptness
    def _f(t):
        f1 = lambda t: (0.5)**(1-a)*(t**a)
        f2 = lambda t: (1-f1(1-t)) …
Run Code Online (Sandbox Code Playgroud)

python numpy moviepy

0
推荐指数
1
解决办法
646
查看次数

一个抽象基类(abc)给出错误__new __()需要4个参数(给定2个)

我在实例化类时遇到错误:

GoogleCrawler('foods')
TypeError: __new__() takes exactly 4 arguments (2 given)
Process terminated with an exit code of 1
Run Code Online (Sandbox Code Playgroud)

我使用的抽象类(abc)可能会产生问题.我称之为:

from crawler.GoogleCrawler import GoogleCrawler

if __name__ == '__main__':
    #w = GoogleCrawler(search_key='PKK')
    GoogleCrawler('foods')
Run Code Online (Sandbox Code Playgroud)

这是代码:

BaseCrawler.py

class BaseCrawler(ABCMeta):
    def __init__(self, search_key='', **kwargs):

        if type(search_key) == str:
            if search_key == '':
                search_key = 'Kabe'
            self.g_search_key_list = [search_key]


        code continues ...
Run Code Online (Sandbox Code Playgroud)

GoogleCrawler.py包含

from BaseCrawler import BaseCrawler

class GoogleCrawler(BaseCrawler):

    def __init__(self, search_key='', **kwargs):
        super().__init__(search_key, **kwargs)

        # google search specific url parameters
        self.search_url_prefix = kwargs.get('search_url_prefix', 'https://www.google.com.sg/search?q=')
        self.search_url_postfix …
Run Code Online (Sandbox Code Playgroud)

python

0
推荐指数
1
解决办法
2822
查看次数

标签 统计

python ×6

moviepy ×2

opencv ×2

animation ×1

html ×1

javascript ×1

matplotlib ×1

numpy ×1

video ×1