当前位置: 首页 > 知识库问答 >
问题:

如何在Python中检测边缘和裁剪图像

范楚
2023-03-14

我不熟悉Python中的图像处理,我正在尝试解决一个常见问题。我有一张有人签名的照片。我想找到边缘并裁剪它以适合图像中的签名。

我尝试了Canny边缘检测和使用现有解决方案列表裁剪图像

我尝试了一些解决方案:

>

  • https://www.quora.com/How-can-I-detect-an-object-from-static-image-and-crop-it-from-the-image-using-openCV

    边缘检测后从所有侧面裁剪图像

    如何从图像中裁剪出最大的矩形

    还有更多。。。虽然看起来很简单,但没有一个有效。使用任何现有解决方案时,我都遇到了错误或未预期的输出。

  • 共有1个答案

    叶翰林
    2023-03-14

    你需要的是门槛。在OpenCV中,您可以使用cv2.threshold()完成此操作。

    我试了一下。我的做法如下:

    1. 转换为灰度

    这是我的尝试,我认为效果不错。

    import cv2
    import numpy as np
    
    # load image
    img = cv2.imread('image.jpg') 
    rsz_img = cv2.resize(img, None, fx=0.25, fy=0.25) # resize since image is huge
    gray = cv2.cvtColor(rsz_img, cv2.COLOR_BGR2GRAY) # convert to grayscale
    
    # threshold to get just the signature
    retval, thresh_gray = cv2.threshold(gray, thresh=100, maxval=255, type=cv2.THRESH_BINARY)
    
    # find where the signature is and make a cropped region
    points = np.argwhere(thresh_gray==0) # find where the black pixels are
    points = np.fliplr(points) # store them in x,y coordinates instead of row,col indices
    x, y, w, h = cv2.boundingRect(points) # create a rectangle around those points
    x, y, w, h = x-10, y-10, w+20, h+20 # make the box a little bigger
    crop = gray[y:y+h, x:x+w] # create a cropped region of the gray image
    
    # get the thresholded crop
    retval, thresh_crop = cv2.threshold(crop, thresh=200, maxval=255, type=cv2.THRESH_BINARY)
    
    # display
    cv2.imshow("Cropped and thresholded image", thresh_crop) 
    cv2.waitKey(0)
    
     类似资料:
    • 我需要裁剪图像根据边缘我发现(与给定epsilon) 我有以下说明:Opencv c检测并裁剪图像上的白色区域 有了一个变化-我试图根据我从精明的边缘检测器收到的边缘图像找到矩形: 我遇到的问题是,当我到达第139列时,它会因为以下异常而崩溃: Microsoft C异常:cv::内存位置0x000000EB35DEF170处的异常。 但是,当我使用原始图像(而不是边缘图像)时,它会按预期工作。

    • 本文向大家介绍如何利用Python 进行边缘检测,包括了如何利用Python 进行边缘检测的使用技巧和注意事项,需要的朋友参考一下 为何检测边缘? 我们首先应该了解的问题是:“为什么要费尽心思去做边缘检测?”除了它的效果很酷外,为什么边缘检测还是一种实用的技术?为了更好地解答这个问题,请仔细思考并对比下面的风车图片和它的“仅含边缘的图”: 可以看到,左边的原始图像有着各种各样的色彩、阴影,而右边的

    • 我使用java中的opencv 2.4.10检测图像中的人脸 我把我的面部检测代码。 } 请任何人帮我解决这个问题。 谢谢

    • 我正在尝试学习opencv并通过测试一些用例来实现一个研究项目。我正试图用python opencv裁剪图像内部的边框。我已经成功地创建了边界框,但在裁剪时失败了 这是图像

    • 问题内容: 我如何像以前在PIL中一样使用OpenCV裁剪图像。 PIL的工作示例 但是我如何在上做到这一点? 这是我尝试的: 但这是行不通的。 我认为我使用不正确。如果是这种情况,请说明如何正确使用此功能。 问题答案: 非常简单。使用numpy切片。

    • 本文向大家介绍python实现canny边缘检测,包括了python实现canny边缘检测的使用技巧和注意事项,需要的朋友参考一下 canny边缘检测原理 canny边缘检测共有5部分组成,下边我会分别来介绍。 1 高斯模糊(略) 2 计算梯度幅值和方向。 可选用的模板:soble算子、Prewitt算子、Roberts模板等等; 一般采用soble算子,OpenCV也是如此,利用soble水平和