在 Python 中识别可执行文件的最佳方法是什么?
我发现以下函数会找到记事本可执行文件
from shutil import which
which('notepad')
Run Code Online (Sandbox Code Playgroud)
from shutil import which
which('notepad')
Run Code Online (Sandbox Code Playgroud)
另一种方法来做到这一点。
from distutils import spawn
spawn.find_executable('notepad')
Run Code Online (Sandbox Code Playgroud)
Out[32]: 'C:\\Windows\\system32\\notepad.EXE'
Run Code Online (Sandbox Code Playgroud)
虽然这两种方法都适用于记事本,但我似乎无法让它们找到其他可执行文件,例如vlc.exe、gimp-2.10.exe或其他文件。在计算机上查找可执行文件的更好方法是什么?
尝试设置用于图像处理的桌面工作站。我最近安装了 ubuntu 16.04,并通过Adrian的指南安装了 python3、cv2 和虚拟环境。
我没有使用 cv2 3.1.0,而是使用了 cv2 3.2.0,但除此之外,一切都是一样的。
正确安装并运行各种测试后,我确认 python3 正在工作并且 cv2 已链接到 python。
因为我习惯了图形界面,所以我决定安装spyder,因为它有一个很好的 GUI 系统。我之前在 2 个独立的设备(一台笔记本电脑和一个树莓派 3)上做过这个。但是,在这台台式计算机上安装时,我遇到了一个奇怪的问题。
当我运行 spyder 时,它会导致以下错误
Could not initialize GLX
Aborted (core dumped)
Run Code Online (Sandbox Code Playgroud)
我一直在网上寻找解决方案,但我似乎无法找到这个问题的答案
编辑:我在 ubuntu 上搜索核心转储文件,发现一堆文件都包含相同的代码 00000033。
我目前正在优化代码以提高图像处理效率。我的第一个问题是,由于vision.VideoFileReader和step地方花了很长时间才能打开每一帧。我通过将灰度图像压缩为1 RGB帧中的3帧来加快代码速度。这样,我可以使用加载1个RGB帧,vid.step()并导入3帧准备进行处理。
现在,我的代码在高斯的拉普拉斯算子(LoG)过滤上运行缓慢。我读到可以使用该函数imfilter执行LoG,但这似乎是下一个速率限制步骤。
进一步阅读后,看来imfilter速度不是最佳选择。显然,MATLAB引入了LoG函数,但它是在R2016b中引入的,不幸的是我正在使用R2016a。
有没有一种方法可以加快速度,imfilter或者有更好的功能可以用来执行LoG过滤?
我应该打电话给python来加快这个过程吗?
码:
Hei = gh.Video.reader.info.VideoSize(2);
Wid = gh.Video.reader.info.VideoSize(1);
Log_filter = fspecial('log', filterdot, thresh); % fspecial creat predefined filter.Return a filter.
% 25X25 Gaussian filter with SD =25 is created.
tic
ii = 1;
bkgd = zeros(Hei,Wid,3);
bkgd(:,:,1) = gh.Bkgd;
bkgd(:,:,2) = gh.Bkgd;
bkgd(:,:,3) = gh.Bkgd;
bkgdmod = reshape(bkgd,720,[]);
while ~isDone(gh.Video.reader)
frame = gh.readFrame();
img_temp = double(frame);
img_temp2 = reshape(img_temp,720,[]); …Run Code Online (Sandbox Code Playgroud) optimization matlab filtering image-processing laplacianofgaussian
我很难找到看似简单的东西.我在图表上有两个已知的坐标,(X1,Y1)和(X2,Y2).我想要识别的是(X3,Y3)的坐标.
我想过使用罪和cos但是一旦我到了这里,我的大脑停止工作.我知道
sin O = y/R
cos O = x/R
Run Code Online (Sandbox Code Playgroud)
所以我想简单地导入线的长度(在这种情况下它是2)并使用已知的角度.看起来很简单,但对于我的生活,我的大脑不会缠绕这个.
我需要这个的原因是因为我试图在matlab中使用poly2mask在图像上打印一条线.代码必须在2D空间中工作,因为我将使用该线构建电影.
X1 = [134 134 135 147 153 153 167]
Y1 = [183 180 178 173 164 152 143]
X2 = [133 133 133 135 138 143 147]
Y2 = [203 200 197 189 185 173 163]
YZdist = 2;
for aa = 1:length(X2)
XYdis(aa) = sqrt((x2(aa)-x1(aa))^2 + (Y2(aa)-Y1(aa))^2);
X3(aa) = X1(aa) * tan(XYdis/YZdis);
Y3(aa) = Y1(aa) * tan(XYdis/YZdis);
end
polmask = poly2mask([Xdata X3],[Ydata Y3],50,50);
Run Code Online (Sandbox Code Playgroud) 我有一个二进制数组,我想根据它们重复的长度翻转值.举个例子
Ar = [0 1 0 0 0 1 1 0 0 0 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1];
Run Code Online (Sandbox Code Playgroud)
理想情况下,我想翻转仅重复2次或更少次数的1,从而产生以下结果.
Ar = [0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1];
Run Code Online (Sandbox Code Playgroud)
尝试运行Telethon 文档提供的基本代码时,我收到以下错误。我很困惑,因为我还没有建立一个循环。
RuntimeError:如果事件循环正在运行,则必须使用“async with”(即您在“async def”中)
我在 spyder 4.0.1 中使用 python 3.7.7
from telethon.sync import TelegramClient
from telethon import functions, types
def channel_info(username, api_id, api_hash):
with TelegramClient(username, api_id, api_hash,channel) as client:
result = client(functions.channels.GetFullChannelRequest(
channel=channel
))
return(result)
out = channel_info(username, api_id, api_hash)
Run Code Online (Sandbox Code Playgroud)