python演算法庫
阿新 • • 發佈:2020-09-03
1、輸入線段兩端點返回線段上所有點(直線方程)
1 # 輸入一條直線兩端點,返回線上所有整數點座標,列表格式為[(x, y), ],順序按x從小到大排列 2 def pointsOnLine(p1, p2): # 直線點1, 直線點2 3 4 x1, y1 = p1[0], p1[1] 5 x2, y2 = p2[0], p2[1] 6 7 if x1 == x2: # 如果兩點x軸座標相同,則為垂直線上的所有點 8 points = [(x1, y) for y in range(y2 if y1 > y2 else y1, y1 + 1 ify1 > y2 else y2 + 1)] 9 return points 10 11 k = (y1 - y2) / (x1 - x2) # 直線斜率 12 b = y1 - (k*x1) # 直線截距 13 14 points = [] 15 XIter = [] 16 17 if x1 > x2: 18 XIter = range(x2, x1 + 1) 19 elif x1 < x2: 20 XIter = range(x1, x2 + 1) 21 22 forx in iter(XIter): 23 y = int(k * x + b) # 直線方程 24 points.append((x, y)) 25 return points
2、opencv-python讀取圖片,增加紅色分量(可改寫成固定區域內的紅分量增強)
1 # 增強圖片紅色分量 2 def addRed(img): 3 temp = img.copy() 4 (cols, rows, channels) = img.shape 5 6 for c in range(cols): 7 #print(col) 8 for r in range(rows): 9 # print(row) 10 R = img[c][r][2] 11 if R + 50 > 255: 12 temp[c][r][2] = 255 13 else: 14 temp[c][r][2] = R + 50 15 return temp
3、給線段兩端點排序(自己用的,很簡單)
1 # 輸入一條線的[[x1, y1], [x2, y2]]這種格式,做一個簡單的判斷,重新擺放兩端點 2 def setLine(line): # [[x1, y1], [x2, y2]] # 將線的兩端點,按照格式重新擺放 3 if line[0][0] > line[1][0]: # 做一些判斷,用來儲存點存放的規則,x值小的點放前面 4 line.append(line[0]) 5 line[0] = line[1] 6 line[1] = line[2] 7 line.pop() 8 elif line[0][0] == line[1][0]: 9 if line[0][1] > line[1][1]: 10 line.append(line[0]) 11 line[0] = line[1] 12 line[1] = line[2] 13 line.pop() 14 return line
4、