Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用Opencv获得更好的轮廓?_Python_Opencv_Image Processing_Computer Vision - Fatal编程技术网

Python 如何使用Opencv获得更好的轮廓?

Python 如何使用Opencv获得更好的轮廓?,python,opencv,image-processing,computer-vision,Python,Opencv,Image Processing,Computer Vision,我正在写一个计算数学运算的计算机视觉程序。在平方根运算之前,我一直在计算积分并以平方形式得到它们。但是当涉及到平方根运算时,我意识到这个方法是无效的,因为它接受了其中的数字。我的问题是: 在我拿到学分后,我可以直接修剪形状而不是方形吗?例如,通过我的算法后,此形状的输出为: 将来我还会添加其他操作。因此,如果我用信用卡修剪形状会更好 由于代码有点长,我将添加主要部分: def检测_操作(): 全局符号、异常值、预处理的_数字 图像、轮廓、阈值=读取和准备(图像路径) 等高线=已排序(等高线,

我正在写一个计算数学运算的计算机视觉程序。在平方根运算之前,我一直在计算积分并以平方形式得到它们。但是当涉及到平方根运算时,我意识到这个方法是无效的,因为它接受了其中的数字。我的问题是: 在我拿到学分后,我可以直接修剪形状而不是方形吗?例如,通过我的算法后,此形状的输出为:

将来我还会添加其他操作。因此,如果我用信用卡修剪形状会更好

由于代码有点长,我将添加主要部分:


def检测_操作():
全局符号、异常值、预处理的_数字
图像、轮廓、阈值=读取和准备(图像路径)
等高线=已排序(等高线,键=λctr:cv2.boundingRect(ctr)[0],反转=假)
检测等高线(等高线)
检测十进制(等高线)
对于枚举(等高线)中的(i,c):
如果我不在异常值中:
x、 y,w,h=cv2.boundingRect(等高线[i])
符号。附加([x,y,x+w,y+h])
(cnts,signs)=zip(*已排序(zip(轮廓,符号),key=lambda b:b[1][0],reverse=False))
打印(“符号:”,符号)
对于标志中的s:
x、 y,w,h=s
cv2.矩形(图像,(x,y),(w,h),颜色=(0,255,0),厚度=2)
数字=阈值[y:h,x:w]
数字=平方(数字)
调整大小的数字=cv2。调整大小(数字,(24,24))
padded_digit=np.pad(调整大小的_digit,((2,2),(2,2)),“常量”,常量值=0.tolist()
预处理的\u位。追加(填充的\u位)
plt.图(figsize=(15,5))
plt.imshow(图像,cmap=“灰色”)
plt.show()
检测_操作()

我不明白这个问题。您想要数字的轮廓而不是它们的边界框吗?如果是这样,画出轮廓。