浏览器input事件已经存在了足够长的时间,除了“不支持”之外,浏览器事件至少可以分为三个不同的支持级别(github 上有关 W3C 规范的最新历史记录):
inputType、也不beforeinput、支持)beforeinput事件、属性inputType等)inputTypes - deleteByComposition, insertCompositionText, insertFromComposition)您如何检测对beforeinput事件的支持?截至撰写本文时(2018 年 4 月),Firefox 的排名为 0,Chrome 和 Safari 的排名更靠前。
我为我的网站创建了 Webauthn 身份验证。现在我正在尝试创建一个良好的界面以获得最佳的用户体验。我的用户不是技术人员。
我对指纹验证选项感兴趣。通过 Yubico 2 或 Google Titan 密钥进行 webauthn 在我的用户中非常罕见。当用户使用电子邮件和密码登录时,我想显示一条消息,例如“您想为下次访问注册指纹吗?[立即注册]”。
我想向正确的用户显示该消息。那么,如何决定在哪些情况下显示该消息呢?
根据https://caniuse.com/#search=PublicKeyCredential,首先我可以使用这样的测试:
var support_webauthn = (typeof window['PublicKeyCredential'] !== "undefined")
这个测试确定浏览器是否支持公钥认证,但也通过测试不知道硬件是否有指纹传感器。
我知道 Android 设备允许 Webauthn 指纹身份验证(而不是 iPhone)。因此,除此之外我还可以检查操作系统是否是 Android
isAndroid = /android/i.test(navigator.userAgent);
但在这种情况下,我无法向使用其他支持的设备的用户显示该消息 - 例如使用 Macbook pro(指纹传感器工作)。
我该如何处理这个问题?
javascript authentication user-experience feature-detection webauthn
我正在尝试制作一个程序,可以从图像数据集中找到类似的图像.步骤是
现在每个图像SURF描述符将被存储为分层k-means树,现在我将每个树存储为单独的文件,或者是否可以构建某种具有所有图像描述符的单个树并在将图像添加到数据集时更新.
algorithm image-processing computer-vision feature-detection
我一直在阅读有关特征检测的内容,并想尝试哈里斯角点检测器.我意识到这是通过打电话来实现的
void cornerHarris(InputArray src, OutputArray dst, int blockSize, int ksize, double k, int borderType=BORDER_DEFAULT )
其中dst是每个像素包含角度强度的浮点图像.
我想看到它的工作,所以我想把它应用到下面的图片:
笔记本电脑的照片http://i49.tinypic.com/dbijh3.jpg
结果是:
未检测到角落http://i49.tinypic.com/jgtzqt.jpg
你可以告诉结果不好.它看起来它只是拾起噪音,甚至没有检测到主角.
这是我用来在图像上打印角落的代码,我使用阈值并为阈值设置任意值.
int _tmain(int argc, _TCHAR* argv[])
{
Mat img, dst, threshed;
img = imread("c:\\laptop.jpg",0);
dst = Mat::zeros(img.size(), CV_32FC1);
cornerHarris(img, dst, 2, 3, 0.04, BORDER_DEFAULT);
threshold(dst, threshed, 0.00001, 255, THRESH_BINARY_INV);
namedWindow("meh", CV_WINDOW_AUTOSIZE);
imshow("meh", threshed);
//imwrite("harris.jpg", threshed);
waitKey(0);
return 0;
Run Code Online (Sandbox Code Playgroud)
If I reduce threshold the result is white with just a few black dots (detections) Increasing threshold just produces a more …
我正在尝试根据描述符制作探测器.我正在使用OpenCV,我已经看到有许多功能类型和描述符类型,以及匹配器类型.更多我还看到,对于要素类型,可以使用网格或金字塔等组合类型.
我没有找到对它们的一个很好的解释(金字塔除外,它说这对于非固有缩放的探测器来说是好的).我希望对每种类型和每种组合(特征描述符 - 匹配器)进行小的描述,以便创建一个想法而不是创建详尽的工作来搜索和验证每个可能的组合.
有谁知道更多关于此的信息?
对于我的大学项目,我需要通过检测叶子的边缘来从植物叶子形状中识别出一种植物.(我使用的是OpenCV 2.4.9和C++),但是源图像已经在工厂的真实环境中获取并且具有多个叶子.请参见下面的示例图像.所以在这里我需要提取一个叶子的边缘模式以进一步处理.

使用Canny Edge Detector我可以识别整个图像的边缘.

但我不知道如何从这里开始提取只有一片叶子的边缘图案,可能会更加清晰完整的叶子.我不知道即使这也是可能的.任何人都可以告诉我,如果这是可能的如何提取一片叶子的边缘我只是想知道我需要应用于图像的图像处理步骤.我不想要任何代码示例.我是图像处理和OpenCV的新手,通过实验学习.
提前致谢.
编辑
正如路易斯所说,在使用Canny边缘检测进行边缘检测后,我已经完成了与图像接近的形态学,但似乎仍然很难从图像中找到最大的轮廓.以下是我处理图像所采取的步骤
应用双边过滤器以减少噪音
bilateralFilter(img_src, img_blur, 31, 31 * 2, 31 / 2);
Run Code Online (Sandbox Code Playgroud)通过直方图均衡来调整对比度
cvtColor(img_blur,img_equalized,CV_BGR2GRAY);
Run Code Online (Sandbox Code Playgroud)应用Canny边缘探测器
Canny(img_equalized, img_edge_detected, 20, 60, 3);
Run Code Online (Sandbox Code Playgroud)阈值二进制图像删除一些背景数据
threshold(img_edge_detected, img_threshold, 1, 255,THRESH_BINARY_INV);
Run Code Online (Sandbox Code Playgroud)图像的形态接近
morphologyEx(img_threshold, img_closed, MORPH_CLOSE, getStructuringElement(MORPH_ELLIPSE, Size(2, 2)));
Run Code Online (Sandbox Code Playgroud)以下是我得到的结果图像.
这个结果我得到了上面的原始图像

第二张图像的源图像和结果
资源 :

结果:

有没有办法检测最大的轮廓并从图像中提取它?
请注意,我的最终目标是使用真实的环境图像创建植物识别系统,但在这里我不能使用模板匹配或掩盖类似的东西,因为用户必须拍摄图像并上传它,因此系统没有任何先前的想法关于叶子.
这是完整的代码
#include <opencv\cv.h>
#include <opencv\highgui.h>
using namespace cv;
int main()
{
Mat img_src, img_blur,img_gray,img_equalized,img_edge_detected,img_threshold,img_closed;
//Load original image
img_src = imread("E:\\IMAG0196.jpg");
//Apply Bilateral Filter to reduce noise
bilateralFilter(img_src, img_blur, 31, 31 * 2, 31 …Run Code Online (Sandbox Code Playgroud) c++ opencv image-processing edge-detection feature-detection
根据维基百科的这篇文章,低级算法的特征提取示例包括边缘检测,角点检测等.
但什么是高级算法?
我只从维基百科文章特征检测(计算机视觉)中找到了这个引用:
偶尔,当特征检测在计算上是昂贵的并且存在时间约束时,可以使用更高级别的算法来引导特征检测阶段,从而仅搜索图像的某些部分的特征.
你能举例说明其中一种更高级别的算法吗?
我正在尝试实现OpenCV 3.0.0 SURF功能描述和检测,但在OpenCV站点上运行示例代码后,我收到所有与SURF相关的错误.什么可能出错?谢谢!
#include <stdio.h>
#include <iostream>
#include "opencv2/core.hpp"
#include "opencv2/features2d.hpp"
#include "opencv2/highgui.hpp"
#include "opencv2/calib3d.hpp"
#include "opencv2/xfeatures2d.hpp"
#include <opencv2/nonfree/nonfree.hpp>
using namespace cv;
using namespace cv::xfeatures2d;
void readme();
/** @function main */
int main(int argc, char** argv)
{
if (argc != 3)
{
readme(); return -1;
}
Mat img_object = imread(argv[1], IMREAD_GRAYSCALE);
Mat img_scene = imread(argv[2], IMREAD_GRAYSCALE);
if (!img_object.data || !img_scene.data)
{
std::cout << " --(!) Error reading images " << std::endl; return -1;
}
//-- Step 1: Detect the keypoints …Run Code Online (Sandbox Code Playgroud) 我正在使用helen 数据集训练DLIB的194个面部地标的shape_predictor,该数据集用于通过face_landmark_detection_ex.cppdlib库检测面部地标.
现在它给了我一个sp.dat大约45 MB的二进制文件,与给出的68个面部标志的文件(http://sourceforge.net/projects/dclib/files/dlib/v18.10/shape_predictor_68_face_landmarks.dat.bz2)相比较少.在培训中
当我使用经过训练的数据获得面部地标位置时,结果我得到了......
这与68个地标的结果非常不同
68地标图片:
为什么?
我目前正在尝试使用python在openCV中使用SIFT的Brute Force功能匹配器.我正在尝试将它用于我的服务器上的图像搜索功能,在那里我输入图像并将该图像与其他图像进行比较,希望匹配将指示相似程度.有没有办法通过使用特征匹配来指示相似程度?
目前,我正在玩我在本网站上发现的内容,我将在下面发布:
img1 = cv2.imread('box.png',0) # queryImage
img2 = cv2.imread('box_in_scene.png',0) # trainImage
# Initiate SIFT detector
sift = cv2.SIFT()
# find the keypoints and descriptors with SIFT
kp1, des1 = sift.detectAndCompute(img1,None)
kp2, des2 = sift.detectAndCompute(img2,None)
# BFMatcher with default params
bf = cv2.BFMatcher()
matches = bf.knnMatch(des1,des2, k=2)
# Apply ratio test
good = []
for m,n in matches:
if m.distance < 0.75*n.distance:
good.append([m])
# cv2.drawMatchesKnn expects list of lists as matches.
img3 = cv2.drawMatchesKnn(img1,kp1,img2,kp2,good,flags=2)
plt.imshow(img3),plt.show()
Run Code Online (Sandbox Code Playgroud)
我现在用来创建"相似性"度量的是从应用比率测试中获得的"好"匹配的数量,并且只是使用简单的方法找到存储的好"匹配"的数量len(good) …
python opencv image-processing computer-vision feature-detection
opencv ×5
c++ ×4
javascript ×2
python ×2
algorithm ×1
dlib ×1
dom-events ×1
input ×1
surf ×1
webauthn ×1