【发布时间】:2017-07-29 09:43:37
【问题描述】:
我正在创建一个 Python 程序,该程序将拍摄一张图像(一张床的照片),然后运行 Canny 边缘检测,然后运行凸船体轮廓检测以确定床的位置。
这是我的图片(请原谅丑陋的 Photoshop 作业)
到目前为止,这是我的代码:
import numpy as np
import argparse
import glob
import cv2
import sys
from pyimagesearch import imutils
from skimage import exposure
def auto_canny(image, sigma = 0.35):
# compute the mediam of the single channel pixel intensities
v = np.median(image)
# apply automatic Canny edge detection using the computed median
lower = int(max(0, (1.0 - sigma) * v))
upper = int(min(255, (1.0 + sigma) *v))
edged = cv2.Canny(image, lower, upper)
# return edged image
return edged
image = cv2.imread("bed_cv.jpg")
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
blurred = cv2.GaussianBlur(gray, (3, 3), 0)
wide = auto_canny(blurred, 0.35)
tight = auto_canny(blurred, 0.95)
auto = auto_canny(blurred)
cv2.imshow("Original", image)
cv2.imshow("Edges", tight)
cv2.waitKey(0)
我们在这里基本上做的是获取图像,变成灰色,模糊它,然后运行精明的边缘检测。
这是我目前得到的输出:
接下来我要做的是运行凸面船体轮廓检测,这样床的右上角将被关闭,并希望得到一个很好的矩形估计床的位置。
现在我被卡住主要是因为我不确定如何使用船体点?我试过类似的东西:
hull = cv2.convexHull(cnts, returnPoints = False)
但我不知道之后该怎么办。
我现在的主要领导是this post from the opencv website。这正是我需要的。他的初始输出是两组断开的边,答案设法将它们连接起来。但是,我对我的 C++ 相当生疏,我不确定如何将 C++ 代码转换为 Python。而且我认为如果我得到了这个的Python版本,我的问题就基本解决了。
【问题讨论】:
-
this。如果您想对其进行编码,请告诉我,我将其作为答案发布
-
@RickM。你能把它编码出来吗?我希望看到它用于我的案例。
-
当然。我会在周末做。
-
@RickM。还是没有代码啊哈哈哈
标签: python c++ python-2.7 opencv