我想从网络摄像头捕获视频并使用opencv将其保存到mp4文件.我在stackoverflow(下面)上找到了很好的示例代码.唯一的障碍是我试图将其保存为mp4,而不是avi.我没有得到的一部分是传递给FOURCC作家的'XVID'论证应该是一个mp4编解码器(来自这个链接).如果我将文件名更改为'output.mp4',它会告诉我标签无效,所以我必须相信XVID编解码器实际上是在创建一个avi文件.这是一个愚蠢的问题吗?我怎么写mp4?
我发现链接显示如何在事后将avi转换为mp4,但这似乎效率低下.似乎我应该能够在初始写入期间执行此操作.
import numpy as np
import cv2
cap = cv2.VideoCapture(0)
# Define the codec and create VideoWriter object
fourcc = cv2.cv.CV_FOURCC(*'XVID')
out = cv2.VideoWriter('output.avi',fourcc, 20.0, (640,480))
while(cap.isOpened()):
ret, frame = cap.read()
if ret==True:
frame = cv2.flip(frame,0)
# write the flipped frame
out.write(frame)
cv2.imshow('frame',frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
else:
break
# Release everything if job is finished
cap.release()
out.release()
cv2.destroyAllWindows()
Run Code Online (Sandbox Code Playgroud) 这真让我抓狂.我做了一些奇怪的事情,似乎我的TEMPLATE_DIRS条目被忽略了.我只有一个settings.py文件,位于项目目录中,它包含:
TEMPLATE_DIRS = (
os.path.join(BASE_DIR, 'templates'),
os.path.join(BASE_DIR, 'web_app/views/'),
)
Run Code Online (Sandbox Code Playgroud)
我将项目级模板放在/ templates文件夹中,然后在我的应用程序文件夹中包含不同视图类别的文件夹(例如,身份验证视图,帐户视图等).
例如,我的主索引页面视图位于web_app/views/main/views_main.py中,看起来像
from web_app.views.view_classes import AuthenticatedView, AppView
class Index(AppView):
template_name = "main/templates/index.html"
Run Code Online (Sandbox Code Playgroud)
其中AppView只是TemplateView的扩展.这是我的问题:当我尝试访问该页面时,我得到一个TemplateDoesNotExist异常,而让我感到困惑的部分是Template-Loader Postmortem:
Template-loader postmortem
Django tried loading these templates, in this order:
Using loader django.template.loaders.filesystem.Loader:
Using loader django.template.loaders.app_directories.Loader:
C:\Python34\lib\site-packages\django\contrib\admin\templates\main\templates\index.html (File does not exist)
C:\Python34\lib\site-packages\django\contrib\auth\templates\main\templates\index.html (File does not exist)
Run Code Online (Sandbox Code Playgroud)
为什么世界上没有搜索"模板"和"web_app/views"目录?我通过调试器和views_main.py中的断点检查了设置,看起来它们就在那里.有人有过类似的问题吗?谢谢.
我是Wix/Burn的新手,我正在尝试理解一些基本原理.我有一个简单的引导程序,使用以下链安装所需的.net 4.0框架:
<Chain>
<PackageGroupRef Id="NetFx40ClientRedist"/>
<MsiPackage Id="MyApp" SourceFile="$(var.WixInstaller.TargetPath)" DisplayInternalUI="yes" />
</Chain>
Run Code Online (Sandbox Code Playgroud)
按照如何:使用刻录安装.NET Framework的建议.该应用程序可以在没有Web访问权限的服务器上使用,因此从本地可再发行组件安装.net非常重要.引导程序似乎运行良好,并按预期安装框架.但是,setup.exe文件的大小与应用程序大小相同(<5 MB),因此我必须假设在安装过程中仍在下载框架.
问题
那么,WixNetfxExtension包中"NetFx40ClientWeb"和"NetFx40ClientRedist"之间的区别是什么?
如何在boostrapper中包含本地可再发行组件,以便不需要下载?
编辑:
我相信我找到了答案在这里:
WiXNetFxExtension将检查名为"redist"的子目录,其中您的包用于包,然后在该路径中不存在时下载它,例如"redist\dotNetFx40_Client_setup.exe".这是标准的Burn行为.
我正在寻找如何使用 pytest-mock 插件的会话范围的“session-mocker”装置的示例。
如何修改文档提供的示例以在特定测试中使用它是相当清楚的:
def test_foo(session_mocker):
session_mocker.patch('os.remove')
etc...
Run Code Online (Sandbox Code Playgroud)
但我对这个全局装置应该在哪里以及如何初始化感到困惑。例如,假设我想为所有测试模拟“os.remove”。我是否在 confftest.py 中进行了设置?如果是,我该怎么做?
我正在尝试使用ASP.NET Identity 2.0启动并运行MVC 5项目.我的出发点是本教程中的示例应用程序.我的初始页面是Home/Index.当我尝试进行搜索(期望返回值为null)时,应用程序只会挂起,我无法弄清楚原因.db上下文的实例化导致调用Seed()方法,这似乎正常,但它挂起在roleManager.FindByName(roleName)调用上(我在下面的代码中对它进行了评论).暂停调试器显示它被卡住但我不知道从那里去哪里.相关课程如下.
控制器:
public class HomeController : ApplicationController
{
public ActionResult Index()
{
var user = db.Users.Find("dummyVal");
return View();
}
[Authorize]
public ActionResult About()
{
ViewBag.Message = "Your app description page.";
return View();
}
public ActionResult Contact()
{
ViewBag.Message = "Your contact page.";
return View();
}
}
Run Code Online (Sandbox Code Playgroud)
基础控制器:
public abstract class ApplicationController : Controller
{
protected ApplicationDbContext db;
public ApplicationController()
{
db = new ApplicationDbContext();
}
}
Run Code Online (Sandbox Code Playgroud)
DB初始化器:
public class ApplicationDbInitializer : DropCreateDatabaseAlways<ApplicationDbContext>
{
protected override …Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个正则表达式来匹配包含在文本限定符中的分隔文件中的条目。如果 X 是字段分隔符,Y 是限定符,a 是条目,则输入字符串的预期形式包括:
XYaaaYXYaaaYXYaaaYX
YaaaYXYaaaYXYaaaYX
XYaaaYXYaaaYXYaaaY
YaaaYXYaaaYXYaaaY
Run Code Online (Sandbox Code Playgroud)
即行的开头和结尾可能有也可能没有字段分隔符。
最终,我试图拔出YaaaY但仅如果任何一个分隔符或行开始/结束接壤。例如,正则表达式应该在 XYaaaYX 和 YaaaYX 上匹配,但在 XYaaaYaaaYX 上不匹配。相当简单,只是我无法找出行端的适当“或”条件。
这对于匹配定界符边界的情况(regex = XYa*YX)来说是微不足道的 ,但我不知道如何做 X OR 行首。事情[^|X]Ya*Y[X|$]看起来很接近但不起作用,因为括号弄乱了线锚。
搜索了我能找到的所有讨论 - 我发现的任何内容都无法回答这个问题。有谁知道如何做到这一点?谢谢!
无法想出这个.CSRF验证在我的所有Django模板视图中都能正常工作.在这里,我试图使用我在其他帖子中找到的技术从python客户端发布.client.get(url)调用确实提供了令牌(调试器显示,例如:client.cookies ['csrftoken'] ='POqMV69MUPzey0nyLmifBglFDfBGDuo9')但requests.post()失败,错误403,CSRF验证失败.这是怎么回事?
我的Django视图(在方法中有一些虚拟的东西):
class CameraUpload(View):
template_name = "account/templates/upload.html"
def get(self, request):
dummy = VideoForm()
return render(request, self.template_name, {'form': dummy})
def post(self, request):
dummy = VideoForm()
return render(request, self.template_name, {'form': dummy})
Run Code Online (Sandbox Code Playgroud)
并且正在尝试发布帖子的客户:
import requests
url = 'http://127.0.0.1:8000/account/camera_upload/'
client = requests.session()
client.get(url)
csrftoken = client.cookies['csrftoken']
payload = {
'csrfmiddlewaretoken': csrftoken,
'tag': '69'
}
r = requests.post(url, data=payload)
Run Code Online (Sandbox Code Playgroud)
编辑:
尝试按照此链接添加引用,所以代码现在看起来像:
r = requests.post(url, data=payload, headers=dict(Referer=url))
Run Code Online (Sandbox Code Playgroud)
但同样存在问题.
我正在尝试读取大文本文件的前 100 行。执行此操作的简单代码如下所示。但是,挑战在于我必须防范没有任何换行符的损坏或其他扭曲文件的情况(是的,人们以某种方式想出了生成这些文件的方法)。在这些情况下,我仍然想读入数据(因为我需要查看那里发生了什么),但将其限制为 n 个字节。
我能想到的唯一方法是逐个字符读取文件。除了速度慢(可能只有 100 行不是问题)我担心当我遇到使用非 ASCII 编码的文件时会遇到麻烦。
是否可以限制使用 readline() 读取的字节数?或者有没有更优雅的方法来处理这个问题?
line_count = 0
with open(filepath, 'r') as f:
for line in f:
line_count += 1
print('{0}: {1}'.format(line_count, line))
if line_count == 100:
break
Run Code Online (Sandbox Code Playgroud)
编辑:
正如@Fredrik 正确指出的那样, readline() 接受一个限制读取字符数的参数(我认为这是一个缓冲区大小参数)。因此,就我的目的而言,以下内容非常有效:
max_bytes = 1024*1024
bytes_read = 0
fo = open(filepath, "r")
line = fo.readline(max_bytes)
bytes_read += len(line)
line_count = 0
while line != '':
line_count += 1
print('{0}: {1}'.format(line_count, line))
if (line_count == 100) or (bytes-read >= max_bytes):
break
else: …Run Code Online (Sandbox Code Playgroud) 我是 OpenCV 的新手,我正在努力解决这个问题。我有一个 .mp4 文件保存在我从网络摄像头流式传输的磁盘上。现在我需要制作视频的较低分辨率版本以上传到网络服务器(这个想法是低分辨率预览或多或少实时上传,然后在稍后的某个时间点上传完整分辨率)。我正在尝试使用 OpenCV/Python 来执行此操作,但找不到任何指向正确方向的内容。Resize() 似乎是相关的,但它看起来只适用于图像而不适用于视频。这真的不可能使用 OpenCV,如果是这样,有人可以推荐替代方案吗?