在下面的二进制图像中,
我已经能够得到值为1 的坐标列表.
坐标从左到右存储.
问题: 我怎样才能对坐标列表进行排序,使它们一个接一个地出现,并且它们遵循这条蛇形路径?
源代码:
from __future__ import division
import numpy as np
import cv2
from skimage.morphology import skeletonize, skeletonize_3d, medial_axis
diff = cv2.imread('img.png', 0)
diff = diff.astype('uint8')
ret, thresh = cv2.threshold(diff, 1, 255, cv2.THRESH_BINARY)
thresh = cv2.dilate(thresh, None, iterations = 1)
sk = skeletonize_3d(thresh)
pixels = np.argwhere(sk==255)
pixels = np.asarray(pixels)
y = pixels[:,0]
x = pixels[:,1]
L = (x, y) # Question: How can I sort L?
np.savetxt("C:/test.csv", np.c_[L], delimiter = ',', fmt='%f')
Run Code Online (Sandbox Code Playgroud)
知道我怎么可能这样做并按照蛇纹排序L?
我试图在 cv2.createTrackbar 的 Trackbar 范围内包含负值。但每次运行脚本时,都不会考虑负值。
我怎样才能包含负值?
import cv2
import numpy as np
from cv2 import CV_WINDOW_AUTOSIZE
def nothing(x):
pass
cv2.namedWindow('image', flags = CV_WINDOW_AUTOSIZE)
cv2.createTrackbar('val1','image',-50,500, nothing)
Run Code Online (Sandbox Code Playgroud)
这将从 0 重置为 500,而不是停留在 -50。我怎样才能将其保持在-50到500之间?
我有一个(.TIFF)文件列表,我正在重命名并以相同的格式保存.我正在使用cv2模块来做到这一点.
import cv2
import os
import glob
os.chdir('C:/99_Temp/')
for file in glob.glob("*.tiff"):
f = os.path.splitext(file)
time_val = f[0][:2]
a1 = cv2.imread(file)
cv2.imwrite(time_val+'.tiff',a1)
Run Code Online (Sandbox Code Playgroud)
为什么文件大小会从原始TIFF文件中减少?我没有做任何处理,视觉上图像看起来一样.但我想知道,为什么区别?
对于下面的数组,我有兴趣根据y轴对X轴进行排序,并记录最低X值的最低元组.
该数组是:
A = [(537, 14),
(537, 12),
(538, 13),
(538, 14), # (538, 14) should be removed and (537, 14) should be kept
(539, 12),
(709, 9)]
Run Code Online (Sandbox Code Playgroud)
我会这样做:
New_A = [(537, 14),
(537, 12),
(538, 13),
(539, 12),
(709, 9)]
Run Code Online (Sandbox Code Playgroud)
我可以在这尝试什么?
python ×4
opencv ×3
sorting ×2
arrays ×1
coordinates ×1
filesize ×1
glob ×1
matrix ×1
scikit-image ×1
scikit-learn ×1
tiff ×1
trackbar ×1