标签: opencv-python

如何加载.mat文件并将其转换为numpy 2D数组?

我在mat文件中有一个数据(观察和功能),我想将其加载到numpy 2D数组中。我不想先将其转换为csv,然后再将csv加载到numpy中。

numpy scipy scikit-learn opencv-python

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

我们如何在 Open CV 中创建轨迹栏,以便我可以使用它跳到视频的特定部分?

我必须使用 Open CV - Python 跳到视频的特定部分,就像我们通常在普通视频播放器中看到的轨迹栏一样。如何创建可用于跳到视频特定部分的轨迹栏?

以及我们如何提高视频的帧率,使其看起来像加载的视频快进。

python opencv opencv-python

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

为什么 NMSboxes 不消除多个边界框?

首先这里是我的代码:

        image = cv2.imread(filePath)
        height, width, channels = image.shape
        
        # USing blob function of opencv to preprocess image
        blob = cv2.dnn.blobFromImage(image, 1 / 255.0, (416, 416),
        swapRB=True, crop=False)
        #Detecting objects
        net.setInput(blob)
        outs = net.forward(output_layers)
        
        # Showing informations on the screen
        class_ids = []
        confidences = []
        boxes = []

        for out in outs:
            for detection in out:
                scores = detection[5:]
                class_id = np.argmax(scores)
                confidence = scores[class_id]
                if confidence > 0.7:
                    # Object detected
                    center_x = int(detection[0] * width)
                    center_y = …
Run Code Online (Sandbox Code Playgroud)

opencv object-detection python-3.x opencv-python yolo

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

如何填充空心线opencv

我有这样的图像: 在此处输入图片说明

在我应用了一些处理之后,例如cv2.Canny(),它现在看起来像这样: 在此处输入图片说明

如您所见,黑线变为空心。我试过腐蚀和膨胀,但如果我多次这样做,两个入口将被关闭(意味着成为连接线或封闭轮廓)。

我怎样才能使这些线条像下图一样牢固,同时保持 2 个入口不受影响?

在此处输入图片说明


更新 1

我已经用几张照片测试了以下答案,但代码似乎是定制的,只能处理这张特定的图片。由于 SOF 的限制,我不能上传大于 2MB 的照片,所以我将它们上传到我的 Microsoft OneDrive 文件夹中,以方便您测试。

https://1drv.ms/u/s!Asflam6BEzhjgbIhgkL4rt1NLSjsZg?e=OXXKBK

更新 2

我拿起@fmw42 的帖子作为答案,因为他的答案是最详细的。它没有回答我的问题,但指出了处理迷宫的正确方法,这是我的最终目标。我喜欢他的回答问题的方法,首先告诉您每个步骤应该做什么,以便您对如何完成任务有一个清晰的想法,然后从头到尾提供完整的代码示例。很有帮助。

由于SOF的限制,我只能挑出一个答案。如果允许多个答案,我也会选择 Shamshirsaz.Navid 的答案。他的回答不仅指出了解决问题的正确方向,而且形象化的解释对我来说真的很管用~!我想它对所有试图理解为什么需要每一行代码的人都同样有效。他也在评论中跟进了我的问题,这使得 SOF 有点互动:)

Ann Zen 的回答中的 Threshold track bar 也是一个非常有用的提示,可以帮助人们快速找到最佳值。

python opencv image-processing opencv-contour opencv-python

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

cv2.waitKey(1) & 0xff == ord('q') 如何工作?

这条线如何运作?

据我所知,cv2.waitKey(number)对于所有int数字的输出都是-1,并且0xff是一个等于255十进制数的十六进制数。

-1 & 0xff等于255十进制数。

此外,ord('q')等于113

但是现在,我不知道为什么255 == 113

python python-3.x opencv-python

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

在Opencv Python中将RGB图像转换为YUV和YCbCr颜色空间图像

谁能帮助我使用opencv Python将RGB色彩空间图像转换为YUV色彩空间图像和YCbCr色彩空间图像?

python opencv image-processing image-preprocessing opencv-python

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

Python Image - 从图像骨架中寻找最大的分支

我有以下形状的骨架图像: 在此处输入图片说明

我想从骨架中提取“最大的分支”: 在此处输入图片说明

我知道也许我需要提取交界点并从该点(?)划分 de 线,但我不知道如何做到这一点。

有没有办法用 Python Scikit Image 或 OpenCV 做到这一点?

python image scikit-image opencv-python

0
推荐指数
2
解决办法
2080
查看次数

检测图像上的迷宫位置

我正在尝试从照片中找到迷宫的位置。

我想得到的是迷宫角落的 (x,y) 点。

正如你所看到的,我cv2.Canny()对图片进行了应用,并得到了一个非常漂亮干净的图像作为开始。

在此处输入图片说明

所以下一步就是定位迷宫。

我已经搜索了一段时间,所有 SOF 问题都要求找到“完美”矩形的位置,例如这个这个 但在我的情况下,矩形没有闭合轮廓,因此它们的代码不起作用就我而言。

也看过 OpenCV 代码,他们都试图找到轮廓并将这些轮廓绘制到图像上,但它对我不起作用。我刚刚得到了 1 个大轮廓,它单独出现在我照片的边界上。

cnts = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)      
cnts = imutils.grab_contours(cnts)
Run Code Online (Sandbox Code Playgroud)

更新 1

原始照片: 在此处输入图片说明

代码:

import cv2
from PIL import Image
from matplotlib import pyplot as plt
import numpy as np
import imutils

img = cv2.imread('maze.jpg')
img = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)

edges = cv2.Canny(img,100,200)


f,axarr = plt.subplots(1,2,figsize=(15,15))

axarr[0].imshow(img)
axarr[1].imshow(edges)

plt.show()
Run Code Online (Sandbox Code Playgroud)

python opencv maze image-processing opencv-python

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

使用opencv从扫描的文档中提取明信片?

我有1000张旧明信片,我想扫描,我认为使用某种自动裁剪/旋转工具优化我的工作流程可能是一个好主意,所以我开始用Python调查openCV.

下面是我可以使用我的扫描仪获取的图片示例: 样品扫描

你可以想象,我的目标是从这张图片中创建3张图片,每张图片包含一张明信片.我尝试了很多opencv选项,到目前为止我能够获得的最佳代码是:

import cv2, sys, imutils

cv2.namedWindow('image', cv2.WINDOW_NORMAL)

image = cv2.imread("sample1600.jpg")
ratio = image.shape[0] / 300.0
image = imutils.resize(image, height = 800)

gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
gray = cv2.GaussianBlur(gray, (5, 5), 0)
ret, th = cv2.threshold(gray,220,235,1)
edged = cv2.Canny(th, 25, 200)

(cnts, _) = cv2.findContours(edged.copy(), cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
cnts = sorted(cnts, key = cv2.contourArea, reverse = True)[:5]

for c in cnts:
    peri = cv2.arcLength(c, True)
    approx = cv2.approxPolyDP(c, 0.05 * peri, True)

    if len(approx) == 4:
        cv2.drawContours(image, [approx], -1, (0, …
Run Code Online (Sandbox Code Playgroud)

python opencv scanning opencv-python

-4
推荐指数
1
解决办法
779
查看次数