小编nat*_*ncy的帖子

如何提高 OpenCV cv2.VideoCapture(0).read() 的性能

我在使用 intel core i7-4510u 的 Kali linux 上运行此脚本:

import cv2
from datetime import datetime
vid_cam = cv2.VideoCapture(0)
vid_cam.set(cv2.CAP_PROP_FPS, 25)
vid_cam.set(cv2.CAP_PROP_FRAME_WIDTH, 640)
vid_cam.set(cv2.CAP_PROP_FRAME_HEIGHT, 360)

lastDate = datetime.now().second
fcount = 0
while(vid_cam.isOpened()):
    if(datetime.now().second>lastDate):
        lastDate = datetime.now().second
        print("Fps: " + str(fcount))
        fcount = 0
    else:
        fcount += 1
    ret, image_frame = vid_cam.read()
    cv2.imshow('frame', image_frame)
    if cv2.waitKey(100) & 0xFF == ord('q'):
        break
vid_cam.release()
cv2.destroyAllWindows()
Run Code Online (Sandbox Code Playgroud)

如果我运行它,它会打印Fps: 4
如果我检查任务管理器,我的 cpu 大约为 2%
问题可能出在哪里?

python video performance opencv video-streaming

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

如何使用pyqtgraph TimeAxisItem动态刷新X轴时间

我将根据一系列数据制作实时曲线。首先,我建立了一个数量字典,里面有3组数据。当前程序可以动态绘制曲线。X轴还可以显示时间,时间也是实时更新的。但是,X 轴上不同点的时间总是相同的值。

UNIX_EPOCH_naive = datetime.datetime(1970, 1, 1, 0, 0) #offset-naive datetime
UNIX_EPOCH_offset_aware = datetime.datetime(1970, 1, 1, 0, 0, tzinfo = pytz.utc) #offset-aware datetime
UNIX_EPOCH = UNIX_EPOCH_naive

TS_MULT_us = 1e6

def now_timestamp(ts_mult=TS_MULT_us, epoch=UNIX_EPOCH):
    return(int((datetime.datetime.utcnow() - epoch).total_seconds()*ts_mult))

def int2dt(ts, ts_mult=TS_MULT_us):
    tz = pytz.timezone('Asia/Shanghai')
    user_ts = int(time.time())
    d1 = datetime.datetime.fromtimestamp(float(user_ts))
    d1x = tz.localize(d1)
    return(d1x)

def dt2int(dt, ts_mult=TS_MULT_us, epoch=UNIX_EPOCH):
    delta = dt - epoch
    return(int(delta.total_seconds()*ts_mult))

def td2int(td, ts_mult=TS_MULT_us):
    return(int(td.total_seconds()*ts_mult))

def int2td(ts, ts_mult=TS_MULT_us):
    return(datetime.timedelta(seconds=float(ts)/ts_mult))

class TimeAxisItem(pg.AxisItem):
    def __init__(self, *args, **kwargs):
        super(TimeAxisItem, self).__init__(*args, **kwargs)
    def tickStrings(self, …
Run Code Online (Sandbox Code Playgroud)

python pyqt pyqtgraph pyqt5

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

如何检测文本是否旋转 180 度或上下翻转

我正在研究一个文本识别项目。文本有可能旋转 180 度。我在终端上尝试过 tesseract-ocr,但没有成功。有什么方法可以检测并纠正吗?文本示例如下所示。

在此输入图像描述

tesseract input.png output
Run Code Online (Sandbox Code Playgroud)

python opencv tesseract

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

使用鼠标在 pyqtgraph 中仅在 x 或 y 方向缩放

我正在使用pyqtgraph,它使用鼠标滚轮具有开箱即用的缩放行为。然而,对于我的应用程序,我只需要放大 x 或 y 方向。

我希望做到以下几点:

  • 检测鼠标点击开始位置:x1,y1
  • 沿 x 或 y 方向拖动鼠标,然后释放鼠标。
  • 检测鼠标点击释放位置:x2,y2
  • 计算 dx = x2-x1 和 dy = y2-y1
  • 如果 dx > dy,则仅将绘图的 x 限制更新为 [x1, x2]。
  • 如果 dy > dx,则仅将绘图的 y 限制更新为 [y1, y2]。

在 pyqtgraph 中解决这个问题的最佳方法是什么?

python pyqtgraph

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

如何向合并了电影资源和图层指令的 AVComposition 添加过滤器

我正在开发的应用程序可以编辑视频文件并将它们合并到 AVComposition 中。这是以一种非常直接的方式完成的,该方式已被详细记录:创建 AVMutableComposition...创建视频和音频轨道。将视频和音频片段插入到这些轨道上。创建一个 AVVideoComposition 对象。用图层指令填充它。

我现在有兴趣向我的 AVComposition 添加过滤器(将在 AVPlayer 中呈现,然后导出到 mp4 文件)。

我能找到的向 AVComposition 添加过滤器的唯一方法是使用 AVMutableVideoComposition 的 videoCompositionWithAsset:applyingCIFiltersWithHandler 初始值设定项。

然而,正如其他人所指出的,以这种方式初始化 AVMutableVideoComposition 不允许稍后添加必要的层指令。

更重要的是,我找不到一种方法来指定分配的过滤器的起点和持续时间(但此时这对我来说不是什么问题)。

我发现的有关在 AVFoundation 中使用过滤器的所有资源都不使用合并视频,而是将过滤器应用于一个视频资产。我尝试使用 AVComposition 作为该资产,但无法使用我的图层指令,结果是无用的。

知道如何创建这样一个合并视频的组合,并且还能够应用过滤器(棕褐色......,亮度等......)。

谢谢

我找到了这个链接,但不清楚: How to use layer instructions into videoCompositionWithAsset:applyingCIFiltersWithHandler method

当尝试初始化时

我收到以下错误/异常:

[AVCoreImageFilterCustomVideoCompositor startVideoCompositionRequest:] 期望视频合成仅包含 AVCoreImageFilterVideoCompositionInstruction'

avfoundation ios

6
推荐指数
0
解决办法
443
查看次数

使用OpenCV Hough变换在2D点云中进行线检测

我已尽力找出如何使用OpenCV进行线路检测。但是,我找不到所需的示例。我想用它在简单的二维点云中找到线。作为测试,我想使用以下几点:

在此处输入图片说明

import random
import numpy as np
import matplotlib.pyplot as plt

a = np.random.randint(1,101,400)  # Random points.
b = np.random.randint(1,101,400)  # Random points.

for i in range(0, 90, 2):  # A line to detect
    a = np.append(a, [i+5])
    b = np.append(b, [0.5*i+30])

plt.plot(a, b, '.')
plt.show()
Run Code Online (Sandbox Code Playgroud)

我已经找到了有关霍夫变换如何工作的许多初始示例。但是,当涉及到代码示例时,我只能发现已使用图像。

有没有一种方法可以使用OpenCV Hough变换来检测一组点中的线,或者可以推荐其他方法或库吗?

----编辑----

阅读了一些很好的答案之后,我觉得我应该描述一下我打算使用它的目的。我有高分辨率的2D LiDAR,需要从数据中提取墙。打字扫描如下所示: 在此处输入图片说明

“正确的输出”如下所示: 在此处输入图片说明

在进行了更多研究之后,我怀疑霍夫变换在这种情况下使用效果不佳。关于我应该寻找的任何提示?

(如果有人感兴趣,可以使用LiDAR和墙面提取来生成地图并导航机器人。)

谢谢,雅各布

python opencv image-processing line computer-vision

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

如何在Python中使用OpenCv裁剪图像中的小像素区域

我想裁剪出图像中充满小曲线的区域。

原始图像如下所示: 在此处输入图片说明

使用开放变形,我可以消除大多数噪音。结果是这样的: 在此处输入图片说明

我尝试使用膨胀将这些像素连接到所需区域,但结果并不令人满意。

opencv中是否有任何功能可以找到该区域?

python opencv image image-processing computer-vision

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

在opencv python中将颜色从黑色反转为白色

我有一种情况,我想在黑色背景的情况下检测白线,在白色背景的情况下检测黑线。我使用了如下的 bitwise_not 操作:

cv2.bitwise_not(mask_black)
Run Code Online (Sandbox Code Playgroud)

它工作得很好,直到并且除非我给出这样的条件:

if mask_black == cv2.bitwise_not(mask_black):
Run Code Online (Sandbox Code Playgroud)

我收到一个错误

ValueError:具有多个元素的数组的真值不明确。使用 a.any() 或 a.all()

我对使用条件有疑问,如果出现黑色背景,则将检测到白线;如果出现白色背景,则将检测到黑线

mask_black = cv2.inRange(hsv, low_black, high_black)
mask_not=cv2.bitwise_not(mask_black)

if mask_black==cv2.bitwise_and(mask_black, mask_not):
    body 
else:
    body
Run Code Online (Sandbox Code Playgroud)

这将返回上述错误

python opencv image-manipulation image image-processing

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

如何在Python OpenCV图像上找到角(x,y)坐标点?

Canny 边缘检测

这是卡车集装箱的俯视图。首先,我需要找到矩形并知道每个角的位置。目标是了解容器的尺寸。

python opencv image image-processing computer-vision

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

查找具有最大表面积(不包括交叉区域)的边界框轮廓

我有一组来自对象检测系统的边界框。它们的格式如下:

[[x,y], [x,y], [x,y], [x,y]]
Run Code Online (Sandbox Code Playgroud)

我想找到最大的边界框,该边界框既不与任何其他提供的框相交,也​​不位于排除的框内。

我正在使用 python,但欢迎使用任何编程语言进行回复:)

视觉示例

在此输入图像描述

我如何尝试但未能解决这个问题。

方法一。

迭代每个点并找到 x 和 y 的最小值和最大值。

然后使用这些坐标裁剪为多边形。

问题是示例图像上的算法会删除图像的顶部部分,但没有必要这样做,因为我们“错过”了左上角和右上角的框。

方法二。

尝试选择一次仅裁剪一侧,因为通常在我的数据集中要排除的内容都在一侧。例如删除顶部 100px

所以我像以前一样计算了 x 和 y 的最小值和最大值。然后计算每个可能切割的面积 - 左、右、上、下,并选择面积最小的一个。

当图片两侧(如左右两侧)都有方框时,这种方法很快就会失败

python opencv image image-processing python-imaging-library

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