我正在尝试将HSV图像分割成其通道,更改它们并将它们合并回来,但是一旦我运行合并功能,通道就被解释为RBG通道,因此例如对于以下示例,我得到一个黄色图像,
import cv2
image = cv2.imread('example.jpg')
hsv_image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)
h, s, v = cv2.split(hsv_image)
s.fill(255)
v.fill(255)
hsv_image = cv2.merge([h, s, v])
cv2.imshow('example', hsv_image)
cv2.waitKey()
Run Code Online (Sandbox Code Playgroud)
使用Python在OpenCV 3中执行此操作的正确方法是什么?
我试图在Elasticsearch上运行看起来像一个简单的查询,但我似乎无法得到我正在寻找的结果.
这是我正在尝试做的一个简短示例:
我有一个新闻数据库.每条新闻都包含一个来源,一个标题,一个时间戳和一个用户.
我希望得到给定用户的每个可用源的最后一个(基于时间戳的)标题.
#!/bin/bash
export ELASTICSEARCH_ENDPOINT="http://localhost:9200"
# Create indexes
curl -XPUT "$ELASTICSEARCH_ENDPOINT/news" -d '{
"mappings": {
"news": {
"properties": {
"source": { "type": "string", "index": "not_analyzed" },
"headline": { "type": "object" },
"timestamp": { "type": "date", "format": "date_hour_minute_second_millis" },
"user": { "type": "string", "index": "not_analyzed" }
}
}
}
}'
# Index documents
curl -XPOST "$ELASTICSEARCH_ENDPOINT/_bulk?refresh=true" -d '
{"index":{"_index":"news","_type":"news"}}
{"user": "John", "source": "CNN", "headline": "Great news", "timestamp": "2015-07-28T00:07:29.000"}
{"index":{"_index":"news","_type":"news"}}
{"user": "John", "source": "CNN", "headline": "More great news", "timestamp": "2015-07-28T00:08:23.000"} …
Run Code Online (Sandbox Code Playgroud) 我需要检索与请求最接近的地理位置和日期时间的文档,因此我不是在寻找日期时间的匹配项,而是在寻找最接近的日期时间项。我使用自定义脚本解决了这个问题,但是我猜测可能有更好的方法来做到这一点,类似于我根据位置和距离过滤地理位置的方式。
这是我的代码(Python):
query = {
"query": {
"function_score": {
"boost_mode": "replace",
"query": {
"filtered": {
"query" : {
"match_all" : {}
},
"filter" : {
"geo_distance" : {
"distance" : "10km",
"location" : json.loads(self.request.body)["location"]
}
}
}
},
"script_score": {
"lang": "groovy",
"script_file": "calculate-score",
"params": {
"stamp": json.loads(self.request.body)["stamp"]
}
}
}
},
"sort": [
{"_score": "asc"}
],
"size": 1
}
response = requests.get('http://localhost:9200/meteo/meteo/_search', data=json.dumps(query))
Run Code Online (Sandbox Code Playgroud)
自定义的calculate-score.groovy脚本包含以下内容:
abs(new java.text.SimpleDateFormat("yyyy-MM-dd\'T\'HH:mm").parse(stamp).getTime() - doc["stamp"].date.getMillis()) / 60000
Run Code Online (Sandbox Code Playgroud)
该脚本将分数返回为文档日期时间与请求的日期时间之间的绝对差异(以分钟为单位)。
还有其他方法可以实现这一目标吗?