使用Python3.5检测Squares OpencCV

时间:2017-03-09 19:18:57

标签: python-3.x opencv

我是OpenCV的初学者,我必须检测照片的正方形,但是,我有一个或一些错误。你知道是否有人可以帮助我吗?

我正在使用的图像是:

enter image description here

然而,我试图找到要成像的正方形。我不能做得很好。我想,错误是我需要格式为CV_8UC1的矩阵,但我不知道怎么能得到它。

def findSquaresInImage(image):
    blurred = np.mat(image.shape,np.dtype('u8'))
    blurred = cv2.blur(blurred, (5, 5))
    cv2.medianBlur(image, 9, blurred)
    gray = cv2.cvtColor(blurred, cv2.COLOR_BGR2GRAY)
    gray0 = np.mat(blurred.copy(), np.dtype('u8'))
    gray = np.mat(image.shape,np.dtype("u8"))
    # ret, gray = cv2.threshold(gray, 0, 255, cv2.THRESH_BINARY + cv2.THRESH_OTSU)

    squares = []
    contours = []
    for c in range(3):
       ch = [c, 0]

       image = cv2.mixChannels(blurred,gray0,ch)

       threshold_level = 2
    for l in range(threshold_level):
        if l == 0:

            cv2.Canny(gray0, 10, 20, gray,3)

            cv2.dilate(gray, np.array([]), gray, (-1, -1))
        else:
            gray = gray0 >= (l+1) * 255 / threshold_level

        (_, cnts, _) = cv2.findContours(gray.copy(), cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)
 ....

我正在使用的主例程,您可能会更改目录和图像的名称以运行该文件:

name = "./directory/file"
image = cv2.imread(name, cv2.IMREAD_COLOR)
image =findSquaresInImage(image)

1 个答案:

答案 0 :(得分:0)

您可能会发现this answer对于显示用于创建矩阵或数组的dtype参数非常有用。特别是dtype=np.uint8在原始海报中对np.zeros()的调用似乎可以适应您在示例中尝试使用np.mat()的内容。