Случаи один и два являются фактически одним и тем же сценарием. Вы должны установить Cache-Control: public
, а затем сгенерировать URL-адрес, содержащий номер сборки / версию сайта, чтобы у вас были непреложные ресурсы, которые могут потенциально длиться вечно. Вы также хотите установить заголовок Expires
в год или более в будущем, чтобы клиенту не нужно было выдавать проверку свежести.
В случае 3 вы могли бы все для максимальной гибкости:
«Cache-Control», «no-cache, must-revalidate» «Expires», 0 «Pragma», «no-cache»
[ ! d5]
Если посмотреть на формат контуров, я бы подумал, что что-то вроде этого должно быть достаточным:
contours = [numpy.array([[1,1],[10,50],[50,50]], dtype=numpy.int32) , numpy.array([[99,99],[99,60],[60,99]], dtype=numpy.int32)]
Эта небольшая программа дает пример:
import numpy
import cv2
contours = [numpy.array([[1,1],[10,50],[50,50]], dtype=numpy.int32) , numpy.array([[99,99],[99,60],[60,99]], dtype=numpy.int32)]
drawing = numpy.zeros([100, 100],numpy.uint8)
for cnt in contours:
cv2.drawContours(drawing,[cnt],0,(255,255,255),2)
cv2.imshow('output',drawing)
cv2.waitKey(0)
Чтобы создать свой собственный контур из списка точек python L
L=[[x1,y1],[x2,y2],[x3,y3],[x4,y4],[x5,y5],[x6,y6],[x7,y7],[x8,y8],[x9,y9],...[xn,yn]]
Создайте массив numtr ctr из L, измените его и введите его тип
ctr = numpy.array(L).reshape((-1,1,2)).astype(numpy.int32)
ctr наш новый счетчик, давайте нарисуем его на существующем изображении
cv2.drawContours(image,[ctr],0,(255,255,255),1)
Чтобы добавить к ответу Cherif KAOUA, я обнаружил, что мне пришлось преобразовать в список и закрепить мой массив numpy. Чтение в массиве точек из текстового файла:
contour = []
with open(array_of_points,'r') as f:
next(f) // line one of my file gives the number of points
for l in f:
row = l.split()
numbers = [int(n) for n in row]
contour.append(numbers)
ctr = np.array(contour).reshape((-1,1,2)).astype(np.int32)
ctr = ctr.tolist()
ctr = zip(*[iter(ctr)]*len(contour))