标签: computer-vision

在图像中查找图标

我刚刚开始学习计算机视觉,并且正在从事一个简单的项目,以在静止图像中查找基本图标。

我有一个模板图片: 在此处输入图片说明

和两个测试图像:

在此处输入图片说明在此处输入图片说明

我使用了模板匹配(使用 AForge.net,但我认为它与 OpenCV 和 Emgu 使用的算法相同。我可能是错的,我是 CV 的新手)并发现阈值为 0.80563,我会找到准确的以上两个中的一个匹配,并且在我尝试过的图标不在的图像中没有匹配。

我以为我找到了某个地方,直到我查看了每个图像中作为匹配项返回的内容:(蓝色突出显示的方块是图像匹配的位置。)

在此处输入图片说明 (正确)和 在此处输入图片说明 (完全错误)

我意识到问题是以下任何一项或全部:

  • 我正在寻找的图标在大小、颜色和阴影方面都相似,但不能保证它们在上述任何一个中都相同。(注意:角度方向和比例应该是一致的。我不希望一个带有“+”的圆圈与模板匹配。我也不希望一个带有小“X”的大圆圈匹配。)
  • 我的模板不是正方形,我只是猜测透明像素不会包含在匹配中。
  • 鉴于上述 2 个问题,模板匹配可能是错误的方法。也许我需要使用其他东西来做到这一点?

最终,我需要一些基本的帮助来了解我的匹配出了什么问题,这样我至少可以重新朝着正确的方向前进。模板匹配正确的方法,但我需要改变一些东西吗?或者我是否需要查看这些库中的其他功能之一?对于这个简单的任务,OpenCV(和 EMGU)功能和 AForge.net 功能之间是否有很多功能差异?

opencv computer-vision aforge emgucv

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

如何使用 opencv 禁用网络摄像头的自动对焦

我正在尝试校准两台相机,但我的问题是自动对焦。我使用网络摄像头罗技 c920。有人知道禁用自动对焦功能的方法吗??我在 osx 系统中使用 C++ 和 opencv 2.4.9。

c++ webcam opencv computer-vision

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

使用图像裁剪作为训练数据集的 TensorFlow 对象检测 API

我想从 Tensorflow 对象检测 API 训练一个 ssd-inception-v2 模型。我想使用的训练数据集是一堆不同大小的裁剪图像,没有边界框,因为裁剪本身就是边界框。

我按照 create_pascal_tf_record.py 示例相应地替换了边界框和分类部分以生成 TFRecords,如下所示:

def dict_to_tf_example(imagepath, label):
    image = Image.open(imagepath)
    if image.format != 'JPEG':
         print("Skipping file: " + imagepath)
         return
    img = np.array(image)
    with tf.gfile.GFile(imagepath, 'rb') as fid:
        encoded_jpg = fid.read()
    # The reason to store image sizes was demonstrated
    # in the previous example -- we have to know sizes
    # of images to later read raw serialized string,
    # convert to 1d array and convert to respective
    # shape that image …
Run Code Online (Sandbox Code Playgroud)

image-processing computer-vision deep-learning conv-neural-network tensorflow

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

给定校正图像的视差图,如何计算真实深度?

我已经为给定的校正立体对计算了视差图!我可以使用公式计算我的深度

z = (baseline * focal) / (disparity * p)
Run Code Online (Sandbox Code Playgroud)

让我们假设基线、焦距和像素常数 p 是已知的,并且我对两个图像使用了相同的相机。现在我的视差可能在 -32..128[pixel] 的范围内。当我使用上面的公式时,对于我的 0 视差值,我将得到无穷大/除以零。当我将视差值移动到 1..161 时,我选择了任意视差值的范围,这是一个问题,因为函数 1/disparity 将在 1..161 或 100..260 处给出完全不同的值间距这甚至不是线性的。所以我什至不会得到(线性)尺度的重建,因为尺度变化是非线性的。

我如何确定我的视差必须位于哪个区域才能使用上述公式进行度量重建?或者根本不可能用上述公式和校正后的图像以度量方式重建某些东西?如果是这样,为什么?

(我知道我可以重新投影到我的未校正图像并进行三角测量,但我特别想知道为什么或如果上面的公式不可能。感谢任何可以帮助我的人!)

computer-vision triangulation disparity-mapping depth 3d-reconstruction

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

如何将从 CNN 提取的特征与其他标量特征连接/组合?

我有一个包含 10, 000 张图像的数据集,每个图像有 5 个二进制标签。我正在尝试为这 5 个类训练 5 个分类器。我决定使用像 VGG 或 ResNet 这样的 CNN 从图像中提取特征。我接下来要做的是将这些“深度特征”与 4 个二元标签结合起来,并预测缺失的标签。结合这些功能是我遇到麻烦的地方。

假设从 VGG 16 中提取的每个图像的特征是一个大小为 4096 的向量。我应该如何将其他特征添加到这个特征向量中?

我做了一些搜索,发现了一个类似的问题。鸢尾花数据集。为了对花朵图像进行分类,每朵花都有一些标签,例如花瓣长度和花瓣宽度。每个图像的特征向量是一个简单的列表,具有两个值,花瓣长度和花瓣宽度。

我应该创建一个大小等于 4100 的向量,并在其末尾添加我的其他 4 个标签吗?!或者我应该为每个图像创建一个 1 * 5 numpy 数组,该数组中的第一个元素是 4096 向量,而其他 4 个元素设置为图像的 4 个标量标签?

python computer-vision scikit-learn deep-learning keras

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

AttributeError: 模块 'cv2.cv2' 没有属性 'waitkey'

import cv2

image = cv2.imread('test_image.jpg')

cv2.imshow('result',image)

cv2.waitkey(0)
Run Code Online (Sandbox Code Playgroud)

- 错误

Traceback (most recent call last):

  File "C:\Users\Ahmed Sabry\Desktop\finding-lanes\lanes.py", line 5, in <module>

    cv2.waitkey(0)

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

python opencv computer-vision

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

从白色背景中提取前景图像

我有以下图像,这是一张带有 4 张图像的扫描打印纸。我在同一张纸上打印了 4 个图像以节省打印资源:

稍后扫描的打印图像 但是,现在我需要逐个提取图像,并为每个图像创建一个单独的图像文件。有没有什么简单的方法可以用 Python、Matlab 或任何其他编程语言做到这一点?

python matlab opencv image-processing computer-vision

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

计算机视觉:Opencv 计算大圆圈内的小圆圈

这是我一直在处理的图像 在此处输入图片说明

目标是检测大圆圈内的小圆圈。

目前我所做的是将图像转换为灰度并应用阈值(cv2.THRESH_OTSU),从而生成此图像 在此处输入图片说明

在此之后,我使用我在 stackoverflow 上找到的椭圆形内核使用 findcontours 应用 Morph open 过滤掉了大对象

结果图像是这样的 在此处输入图片说明

有人可以指导我通过正确的路径做什么以及我在哪里出错。

下面是我一直在处理的附加代码

import cv2
import numpy as np

# Load image, grayscale, Otsu's threshold
image = cv2.imread('01.jpg')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
thresh = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)[1]
#cv2.imwrite('thresh.jpg', thresh)

# Filter out large non-connecting objects
cnts = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
cnts = cnts[0] if len(cnts) == 2 else cnts[1]
for c in cnts:
    area = cv2.contourArea(c)
    #print(area)
    if area < 200 and area > 0:
        cv2.drawContours(thresh,[c],0,0,-1) …
Run Code Online (Sandbox Code Playgroud)

python opencv image-processing computer-vision opencv-contour

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

模糊圆检测

我是 opencv 的新手,想检测这些圆圈的中心点。我尝试使用带有阈值的 Hough Circles,但它似乎并没有一直产生好的结果。

使用轮廓和阈值很容易获得此图像:

使用轮廓和阈值很容易获得此图像

更难做到这一点:

做这个比较难

阈值和霍夫圆不适用于此图像:

阈值和霍夫圆不适用于此图像

添加更多图像以获取帮助

你能建议任何对所有图像都可靠的方法吗?

opencv image-processing computer-vision

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

如何撤消图像的旋转?

这是一个图像示例。图像中的对象似乎已旋转。我如何撤消它的旋转?

在此处输入图片说明

python opencv computer-vision

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