想象一下我有一些顶点,这些顶点的属性是列表,例如:
import cv2
import numpy as np
img = cv2.imread("/your/path/C03eN.jpg")
def find_contours_and_centers(img_input):
img_gray = cv2.cvtColor(img_input, cv2.COLOR_BGR2GRAY)
img_gray = cv2.bilateralFilter(img_gray, 3, 27,27)
#(T, thresh) = cv2.threshold(img_input, 0, 100, 0)
#_, contours_raw, hierarchy = cv2.findContours(img_gray, cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
_, contours_raw, hierarchy = cv2.findContours(img_gray, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)
contours = [i for i in contours_raw if cv2.contourArea(i) > 20]
contour_centers = []
for idx, c in enumerate(contours):
M = cv2.moments(c)
cX = int(M["m10"] / M["m00"])
cY = int(M["m01"] / M["m00"])
samp_bounds = cv2.boundingRect(c)
contour_centers.append(((cX,cY), samp_bounds))
print("{0} contour centers and bounds found".format(len(contour_centers)))
contour_centers = sorted(contour_centers, key=lambda x: x[0])
return (contours, contour_centers)
conts, cents = find_contours_and_centers(img.copy())
x,y,w,h = cv2.boundingRect(conts[0])
cropped = img[y+10:y+(h-10),x+10:x+(w-10)]
cv2.imwrite("/your/path/cropped.jpg", cropped)
如何找到g.addV('v').property('prop',['a','b','c'])
包含某个值的情况?
这似乎是显而易见的尝试:
prop
但这不起作用:
g.V().has(P.within('prop'),'a')
答案 0 :(得分:2)
如果您使用VertexProperty列表基数(请参阅文档中的multi-properties),则可以这样完成:
async function notify() {
await delay(2000);
throw new Error();
}
notify().then(/*...*/).catch(/*...*/);
请注意,throw
是通过>>> g.addV('v').property(list_, 'prop', 'a').property(list_, 'prop', 'b').property(list_, 'prop', 'c').next()
v[0]
>>> g.V().has('prop', within('a')).toList()
[v[0]]
来自枚举的。
答案 1 :(得分:2)
如果它是真实列表(不是多值属性),则必须展开该值:
gremlin> g = TinkerGraph.open().traversal()
==>graphtraversalsource[tinkergraph[vertices:0 edges:0], standard]
gremlin> g.addV('v').property('prop',['a','b','c'])
==>v[0]
gremlin> g.V().filter(values('prop').unfold().is('a'))
==>v[0]
// or
gremlin> g.V().has('prop', unfold().is('a'))
==>v[0]
请注意,此过滤器需要对所有顶点进行全面扫描,因为无法为单个列表条目建立索引。因此,您应该看看Jason的答案,因为多属性通常是更好的选择。