用python中的opencv有没有办法获得更清晰、更连续的优势?
我试图做一个边缘检测,从流动图形中的左图像生成右图像 有3个不同的彩色区域,因此结果有3个分离的部分 这是我的密码用python中的opencv有没有办法获得更清晰、更连续的优势?,python,algorithm,opencv,machine-learning,deep-learning,Python,Algorithm,Opencv,Machine Learning,Deep Learning,我试图做一个边缘检测,从流动图形中的左图像生成右图像 有3个不同的彩色区域,因此结果有3个分离的部分 这是我的密码 img = cv2.imread('img2.png') imgRGB = cv2.cvtColor(img, cv2.COLOR_BGR2RGB) f, axs = plt.subplots(1,2,figsize=(12,8)) edges = cv2.Canny(img,1,255) axs[0].imshow(imgRGB) axs[1].imshow(edges,cma
img = cv2.imread('img2.png')
imgRGB = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
f, axs = plt.subplots(1,2,figsize=(12,8))
edges = cv2.Canny(img,1,255)
axs[0].imshow(imgRGB)
axs[1].imshow(edges,cmap = 'gray')
这是输出
OpenCV忽略了原始图像中红色部分的边缘,这不符合我的需要
方形边缘也被丢弃,这不符合我的需要
在右轴上检测到的边不是连续的,这不符合我的需要
有没有办法修复以上3个bug?或者如何实现一个新算法来满足我的需要。您可以通过更改Canny的值来改进结果。因为您的图像由颜色相似的区域组成,所以您可以发现边缘非常好: 您可以使用此代码自己尝试:
import cv2
import numpy as np
cv2.namedWindow('Result')
img = cv2.imread('qkEuE.png')
v1 = 0
v2 = 0
def doEdges():
edges = cv2.Canny(img,v1,v2)
edges = cv2.cvtColor(edges,cv2.COLOR_GRAY2BGR)
res = np.concatenate((img,edges),axis = 0)
cv2.imshow('Result',res)
def setVal1(val):
global v1
v1 = val
doEdges()
def setVal2(val):
global v2
v2 = val
doEdges()
cv2.createTrackbar('Val1','Result',0,500,setVal1)
cv2.createTrackbar('Val2','Result',0,500,setVal2)
cv2.imshow('Result',img)
cv2.waitKey(0)
cv2.destroyAllWindows()
请发布一个完整的工作示例,以便我们能够重现您所做的工作,包括“导入”行,如果可能,还包括输入图像img2.png。