Numpy linspace在指定的时间间隔内返回均匀间隔的数字.Numpy logspace返回的数字在对数刻度上均匀分布.
我不明白为什么numpy logspace经常从我设置的边界返回"超出范围"的值.在0.02和之间取数字2.0:
import numpy as np
print np.linspace(0.02, 2.0, num=20)
print np.logspace(0.02, 2.0, num=20)
Run Code Online (Sandbox Code Playgroud)
第一个输出是:
[ 0.02 0.12421053 0.22842105 0.33263158 0.43684211 0.54105263
0.64526316 0.74947368 0.85368421 0.95789474 1.06210526 1.16631579
1.27052632 1.37473684 1.47894737 1.58315789 1.68736842 1.79157895
1.89578947 2. ]
Run Code Online (Sandbox Code Playgroud)
这看起来很正确.但是,输出np.logspace()错误:
[ 1.04712855 1.33109952 1.69208062 2.15095626 2.73427446
3.47578281 4.41838095 5.61660244 7.13976982 9.07600522
11.53732863 14.66613875 18.64345144 23.69937223 30.12640904
38.29639507 48.68200101 61.88408121 78.6664358 100. ]
Run Code Online (Sandbox Code Playgroud)
为什么输出1.047到100.0?
鉴于以下代码:
import numpy as np
import cv2
gray = cv2.imread('image.png')
edges = cv2.Canny(gray,50,150,apertureSize = 3)
cv2.imwrite('edges-50-150.jpg',edges)
minLineLength=100
lines = cv2.HoughLinesP(image=edges,rho=1,theta=np.pi/180, threshold=100,lines=np.array([]), minLineLength=minLineLength,maxLineGap=80)
a,b,c = lines.shape
for i in range(a):
cv2.line(gray, (lines[i][0][0], lines[i][0][1]), (lines[i][0][2], lines[i][0][3]), (0, 0, 255), 1, cv2.LINE_AA)
cv2.imwrite('houghlines.jpg', gray)
cv2.imshow('img', gray)
cv2.waitKey(0)
Run Code Online (Sandbox Code Playgroud)
我可以实现此(源)图像中的水平线:
这是结果:
如何删除红色的行?我想要实现的是删除这些行,使图像更干净并可供另一个进程使用。代码取自此处。