我试图检测这张图片中的管道数。为此,我使用 OpenCV 和基于 Python 的检测。基于对类似问题的现有答案,我能够提出以下步骤
当我们手动计数时,管道的总数约为 909给或取 4。
应用过滤器后
import cv2
import matplotlib.pyplot as plt
import numpy as np
img = cv2.imread('images/input-rectpipe-1.jpg')
blur_hor = cv2.filter2D(img[:, :, 0], cv2.CV_32F, kernel=np.ones((11,1,1), np.float32)/11.0, borderType=cv2.BORDER_CONSTANT)
blur_vert = cv2.filter2D(img[:, :, 0], cv2.CV_32F, kernel=np.ones((1,11,1), np.float32)/11.0, borderType=cv2.BORDER_CONSTANT)
mask = ((img[:,:,0]>blur_hor*1.2) | (img[:,:,0]>blur_vert*1.2)).astype(np.uint8)*255
Run Code Online (Sandbox Code Playgroud)
我得到这个蒙面图像
这在显示的可见矩形数量方面看起来相当准确。但是,当我尝试进行计数并在图片顶部绘制边界框时,它也会选择很多不需要的区域。对于圆,HoughCircles 有一种定义最大和最小半径的方法。矩形是否有类似的东西可以提高准确性。另外,我愿意接受有关解决此问题的替代方法的建议。
ret,thresh = cv2.threshold(mask,127,255,0)
contours,hierarchy = cv2.findContours(thresh, 1, 2)
count = 0
for i in range(len(contours)):
count = count+1
x,y,w,h = cv2.boundingRect(contours[i])
rect = cv2.minAreaRect(contours[i])
area …Run Code Online (Sandbox Code Playgroud) python opencv image-processing object-detection computer-vision
我已经将Android 4.0.1_r1源代码下载到我的本地系统.我正在努力了解构建自己的自定义Android ROM并根据我的要求进行修改.
我经历了一些关于如何为Android构建自定义ROM的基于Web的教程,我对整个过程很清楚.我实际上正在寻找的是一种定义明确的结构化方法,用于删除与源代码一起下载但我自己的构建版本不需要的包.
此外,如果有人可以提供指向构建android源(指南,书籍或教程)的链接,将会很有帮助,因为大多数可用资源都是基于使用Android SDK和应用程序框架创建Android APP.很难找到任何体面的深入教程解释整个架构,源代码树和平台级开发人员的不同构建指南.
要求:我想通过我的笔记本电脑使用WI-Fi控制我的Android手机.为此,我需要运行一个Web服务器和一个"自定义"的Web应用程序,该应用程序通过特定端口和wifi适配器的IP地址在Android手机上运行.例如,我可以通过笔记本电脑中的浏览器连接到手机上运行的Web应用程序:http://(ip address of the phone):port
我尝试过的事情:我评估了几个用于android的web服务器,它允许我运行基于java的servlet,如(ijetty).还有其他像TWJS,KWS,PAW等.到目前为止,我可以在手机上运行它们并通过我的笔记本电脑访问网络服务器.
我的问题:在开发适用于Android的应用程序的所有资源和材料中,我真的很难找到有关Web技术的任何有用和清晰的信息,我应该创建一个可以使用android API并有效地与之通信的Web应用程序.手机就像任何原生Android应用程序一样.
i-Jetty声称支持可以使用android apis的Web应用程序,但缺乏关于如何构建使用Android API的Web应用程序/ servlet的任何真实文档.
虽然,我的要求类似于Android的现有应用程序即AirDroid,但它不是开源的,也没有讨论与其实现架构相关的任何内容.因此,我对任何可以帮助我创建用于无线管理Android手机的Web应用程序的建议持开放态度.
这个问题可能听起来像是重复的,但我已经尝试了stackoverflow上其他类似问题的所有步骤,但没有一个有效.我正在尝试使用离子连接到Rails API.
我的设置是Rails 4,设计身份验证,基于令牌的API请求的simple_token_authentication gem和移动应用程序的离子设置.
我可以通过将具有正确用户名和密码的登录请求传递给设计会话控制器api来登录离子,并在成功登录设计api后获取令牌.
之后,当我尝试使用访问令牌使用get查询访问任何控制器的索引时: http:// localhost:3002/api/categories?token = 1098ccee839952491a4或http:// localhost:3002/api/employer?token = 1098ccee839952491a4
响应是设计的sign_in页面.在rails日志中,它显示
Started GET "/api/categories?token=1098ccee839952491a43" for ::1 at 2016-06-17 17:45:55 +0530
Processing by Api::CategoriesController#index as HTML
Parameters: {"token"=>"1098ccee839952491a43"}
User Load (0.7ms) SELECT `users`.* FROM `users` WHERE `users`.`authentication_token` = '1098ccee839952491a43'
Completed 401 Unauthorized in 3ms (ActiveRecord: 0.7ms)
Started GET "/users/sign_in" for ::1 at 2016-06-17 17:45:55 +0530
Processing by Devise::SessionsController#new as HTML
Rendered devise/shared/_links.html.erb (6.5ms)
Rendered devise/sessions/new.html.erb within layouts/login (78.3ms)
Completed 200 OK in 3850ms (Views: 3847.1ms …Run Code Online (Sandbox Code Playgroud) 我试图检测这张图片中的水管数量。为此,我正在尝试使用 OpenCV 和基于 Python 的检测。结果,我得到的结果让我有点困惑,因为圆圈的范围太大且不准确。
编码
import numpy as np
import argparse
import cv2
# construct the argument parser and parse the arguments
ap = argparse.ArgumentParser()
ap.add_argument("-i", "--image", required = True, help = "Path to the image")
args = vars(ap.parse_args())
# load the image, clone it for output, and then convert it to grayscale
image = cv2.imread(args["image"])
output = image.copy()
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
#detect circles in the image
#circles = cv2.HoughCircles(gray, cv2.HOUGH_GRADIENT, 1.2, param1=40,minRadius=10,maxRadius=35)
circles = cv2.HoughCircles(gray, cv2.HOUGH_GRADIENT, 8.5,70,minRadius=0,maxRadius=70) …Run Code Online (Sandbox Code Playgroud) python opencv image-processing object-detection computer-vision
我正在尝试找到一种使用 mongoid 更新单个数组项的方法。我正在使用 Rails 4 和 Mongodb。
我的模型看起来像这样
class User
include Mongoid::Document
include Mongoid::Timestamps
field :my_book_list, type: Array, default: []
field :book_name, type: String
Run Code Online (Sandbox Code Playgroud)
我可以使用以下代码向数组字段添加条目:
User.where(id: self.user_id).add_to_set("my_book_list" => self.book_name)
Run Code Online (Sandbox Code Playgroud)
将数据添加到数组后,在数据库中它看起来像这样
db.collection.users
{
"_id" : ObjectId("56e09d54a0d00b0528000001"),
"status" : true,
"sign_in_count" : 3,
"my_book_list" :
["Learning Ruby", "MongoDB for Dummies"]
}
Run Code Online (Sandbox Code Playgroud)
我正在努力解决的是找到一种 Rails / Mongoid 方法,通过查找名称来更新数组中项目的值。
简单地说,如何通过名称搜索而不知道其索引来更改 my_book_list[1] 的值。在本例中,索引 1 是“MongoDB for Dummies”,需要更新为“MongoDB”。这样“my_book_list”数组字段在更新后看起来像这样:
db.collection.users
{
"_id" : ObjectId("56e09d54a0d00b0528000001"),
"status" : true,
"sign_in_count" : 3,
"my_book_list" :
["Learning Ruby", "MongoDB"]
}
Run Code Online (Sandbox Code Playgroud)
我该如何实现这一目标?
我正在尝试通过可穿戴设备使用情况的统计数据来提取用户。忠实用户是指最近30天内使用可穿戴设备超过20天且平均每天使用可穿戴设备大于4小时的用户。因此,简而言之,忠实用户 =(至少 20 天使用时间 + 每天平均使用时间 > 4 小时)
在 Elasticsearch 中,使用文档根据日期和使用时间进行索引。
{
id:"AL-2930",
"usage_duration":4.5,
"sessionDate":"2020-05-01"
},
{
id:"AL-2930",
"usage_duration":5.5,
"sessionDate":"2020-05-02"
},
{
id:"AL-2931",
"usage_duration":3.5,
"sessionDate":"2020-05-01"
},
{
id:"AL-2931",
"usage_duration":3.0,
"sessionDate":"2020-05-02"
},
Run Code Online (Sandbox Code Playgroud)
我尝试运行的查询给出了正确的结果。
{
"aggs": {
"users": {
"terms": {
"field": "id",
"min_doc_count": 20,
"order" : { "_key" : "asc" }
},
"aggs": {
"avg_usage": {
"avg": {
"field": "usage_duration"
}
},
"usage_filter": {
"bucket_selector": {
"buckets_path": {
"avgUsage": "avg_usage"
},
"script": "params.avgUsage > 4.0"
}
}
}
}
} …Run Code Online (Sandbox Code Playgroud) 有两个数组:
A = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
B = [3, 4, 1, 5, 2, 6]
Run Code Online (Sandbox Code Playgroud)
我想以一种B方式排序,对于B存在的所有元素A,按照数组中的顺序对元素进行排序A.
所需的排序结果将是
B #=> [1, 2, 3, 4, 5, 6]
Run Code Online (Sandbox Code Playgroud)
我试过这样做
B = B.sort_by { |x| A.index }
Run Code Online (Sandbox Code Playgroud)
但它不起作用.
这个问题与可能的重复有所不同,因为它处理相应数组中元素的存在,并且此处不存在哈希.
如果有阵列
array A = ["a","b","c","d"] #Index is [0,1,2,3]
Run Code Online (Sandbox Code Playgroud)
它被分类到.
array A = ["d","c","b","a"]
Run Code Online (Sandbox Code Playgroud)
我需要一个数组,根据排序顺序返回更新的索引
[3,2,1,0]
Run Code Online (Sandbox Code Playgroud)
我正试图找到这个红宝石的解决方案
更新问题
如果a被排序为
array A = ["d","b","c","a"] #not a pure reverse
Run Code Online (Sandbox Code Playgroud)
然后返回的索引数组应该是
[3,1,2,0]
Run Code Online (Sandbox Code Playgroud)