小编Pan*_*a50的帖子

将 GPU 与 opencv-python 结合使用

我正在尝试在 Windows 10 上使用带有 GPU 的 opencv-python。

我使用 pip 安装了 opencv-contrib-python,它是 v4.4.0.42,我的计算机和路径中也有 Cuda。

无论如何,这是我正在尝试编译的(简单)代码:

import cvlib as cv
from cvlib.object_detection import draw_bbox

bbox, label, conf = cv.detect_common_objects(img,confidence=0.5,model='yolov3-worker',enable_gpu=True)

output_image = draw_bbox(img, bbox, label, conf)
Run Code Online (Sandbox Code Playgroud)

首先,这是告诉我 tf 可以与 cuda 一起使用的行:

2020-08-26 5:51:55.718555: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library cudart64_101.dll
Run Code Online (Sandbox Code Playgroud)

但是当我尝试使用 GPU 分析图像时,会发生以下情况:

[ WARN:0] global C:\Users\appveyor\AppData\Local\Temp\1\pip-req-build-j8nxabm_\opencv\modules\dnn\src\dnn.cpp (1429) cv::dnn::dnn4_v20200609::Net::Impl::setUpNet DNN module was not built with CUDA backend; switching to CPU
Run Code Online (Sandbox Code Playgroud)

有没有办法在不使用 cmake 安装 opencv 的情况下解决这个问题?窗户上乱七八糟...

python opencv python-3.x tensorflow opencv4

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

FitEllipse opencv-python > 4

我在 fitellipse 和 opencv-python 方面遇到了很大的问题。

我知道我必须安装 opencv-contrib-python 才能获得一些功能,但它不适用于 fitellips 函数。

使用时:

import cv2
cv2.fitEllipse()
Run Code Online (Sandbox Code Playgroud)

这是结果:

TypeError: fitEllipse() missing required argument 'points' (pos 1)
Run Code Online (Sandbox Code Playgroud)

但如果现在我尝试使用例如图像的轮廓检测:

img = cv2.imread('messi5.jpg',0)
retz,bawgray=cv2.threshold(img , 110,255,cv2.THRESH_BINARY)
contours,hierarchy = cv2.findContours(bawgray,1,1)
cnt = contours
big_contour = []
maxop = 0
for i in cnt:
    areas = cv2.contourArea(i) 
    if areas > maxop:
        maxop = areas
        big_contour = i 
img=cv2.drawContours(img, big_contour, -1, (0,255,0), 3)
cv2.FitEllipse(big_contour)
Run Code Online (Sandbox Code Playgroud)

这是结果:

AttributeError: module 'cv2.cv2' has no attribute 'FitEllipse'
Run Code Online (Sandbox Code Playgroud)

我使用 opencv-python 4.2.0.34 和 opencv-contrib-python 4.2.0.34

opencv python-3.x

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

最小化相互不相交的二分点对之间的距离总和

我有一个多维数组,它表示两组点之间的距离(分别用蓝色和红色着色)。

import numpy as np
distance=np.array([[30,18,51,55],
                   [35,15,50,49],
                   [36,17,40,32],
                   [40,29,29,17]])
Run Code Online (Sandbox Code Playgroud)

每列代表红点,行代表蓝点。此矩阵中的值表示红点和蓝点之间的距离。这是一个草图,以了解它的外观:

在此处输入图片说明

题: 如何找到相互不相交的(蓝色,红色)对之间距离总和的最小值?

试图

我期待在上图中找到 1=1、2=2、3=3 和 4=4。但是,如果我使用一个简单的 argmin numpy 函数,例如:

for liste in distance:
    np.argmin(liste)
Run Code Online (Sandbox Code Playgroud)

结果是

1
1
1
3
Run Code Online (Sandbox Code Playgroud)

因为 2 红点是最近的 1,2 和 3 蓝点。

在这种情况下,有没有办法做一些通用的事情来让事情变得更好?我的意思是不使用大量 if 语句和 while 函数。

python arrays numpy scipy multidimensional-array

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