我刚刚开始学习计算机视觉,并且正在从事一个简单的项目,以在静止图像中查找基本图标。
和两个测试图像:
我使用了模板匹配(使用 AForge.net,但我认为它与 OpenCV 和 Emgu 使用的算法相同。我可能是错的,我是 CV 的新手)并发现阈值为 0.80563,我会找到准确的以上两个中的一个匹配,并且在我尝试过的图标不在的图像中没有匹配。
我以为我找到了某个地方,直到我查看了每个图像中作为匹配项返回的内容:(蓝色突出显示的方块是图像匹配的位置。)
我意识到问题是以下任何一项或全部:
最终,我需要一些基本的帮助来了解我的匹配出了什么问题,这样我至少可以重新朝着正确的方向前进。模板匹配正确的方法,但我需要改变一些东西吗?或者我是否需要查看这些库中的其他功能之一?对于这个简单的任务,OpenCV(和 EMGU)功能和 AForge.net 功能之间是否有很多功能差异?
我正在尝试校准两台相机,但我的问题是自动对焦。我使用网络摄像头罗技 c920。有人知道禁用自动对焦功能的方法吗??我在 osx 系统中使用 C++ 和 opencv 2.4.9。
我想从 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
我已经为给定的校正立体对计算了视差图!我可以使用公式计算我的深度
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
我有一个包含 10, 000 张图像的数据集,每个图像有 5 个二进制标签。我正在尝试为这 5 个类训练 5 个分类器。我决定使用像 VGG 或 ResNet 这样的 CNN 从图像中提取特征。我接下来要做的是将这些“深度特征”与 4 个二元标签结合起来,并预测缺失的标签。结合这些功能是我遇到麻烦的地方。
假设从 VGG 16 中提取的每个图像的特征是一个大小为 4096 的向量。我应该如何将其他特征添加到这个特征向量中?
我做了一些搜索,发现了一个类似的问题。鸢尾花数据集。为了对花朵图像进行分类,每朵花都有一些标签,例如花瓣长度和花瓣宽度。每个图像的特征向量是一个简单的列表,具有两个值,花瓣长度和花瓣宽度。
我应该创建一个大小等于 4100 的向量,并在其末尾添加我的其他 4 个标签吗?!或者我应该为每个图像创建一个 1 * 5 numpy 数组,该数组中的第一个元素是 4096 向量,而其他 4 个元素设置为图像的 4 个标量标签?
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) 目标是检测大圆圈内的小圆圈。
目前我所做的是将图像转换为灰度并应用阈值(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
我是 opencv 的新手,想检测这些圆圈的中心点。我尝试使用带有阈值的 Hough Circles,但它似乎并没有一直产生好的结果。
使用轮廓和阈值很容易获得此图像:
更难做到这一点:
阈值和霍夫圆不适用于此图像:
你能建议任何对所有图像都可靠的方法吗?
computer-vision ×10
opencv ×7
python ×5
aforge ×1
c++ ×1
depth ×1
emgucv ×1
keras ×1
matlab ×1
scikit-learn ×1
tensorflow ×1
webcam ×1