我知道这已经在 stackoverflow 上讨论过几次,但我找不到足够的答案。对于一个项目,我正在寻找可以从输入图像中识别条形码数字的最好的软件/api/库。它将用于手机(iphone、windows mobile、android 等),因此它应该擅长从不良角度、模糊图像和此类恶劣条件下捕捉条码。开源或商业化并不重要,只要它做得好(确实开源会更好:))
如果您对此主题有任何经验,请与我们分享:)
谢谢
我正在尝试做一个应用程序,除其他外,它能够从屏幕截图中识别计算机屏幕上的国际象棋位置。我对图像处理技术的经验非常有限,不希望投入大量时间来研究这个,因为这只是我的一个宠物项目。
任何人都可以向我推荐一种或多种可以给我带来好的结果的图像处理技术吗?
条件是:
感谢您花时间阅读本文,我希望得到一些好的答案。
pattern-recognition chess image-processing image-recognition
我搜索了一个很好的Android图像识别API /库.我发现了一些,但它们不适合我,因为我们必须将图像放在他们的服务器上.我想要一个允许您在自己的服务器上搜索的内容.
我的数据库中有一个产品列表(名称+图像).我希望允许用户使用他的手机拍照并获取相关产品图片.
编辑
搜索之后,我还没有找到一个完全符合我需求的库(在你自己的服务器上搜索).但我发现一个与其他人相比是完美的(用json将元数据附加到图像上,为项目上传多个图像):Kooaba.不幸的是,Kooaba没有Android库.如果你能推荐像Kooaba这样的东西,那就太棒了.
我试图在图纸中检测"洞",也就是说,它们不是圆圈,它们的大小各不相同.图像总是黑白的.只是试图解决这个问题,我从Python文档中拿了一个例子:
import cv2
from cv2 import *
import numpy as np
img = cv2.imread('hole_test.jpg',0)
img = cv2.medianBlur(img,5)
cimg = cv2.cvtColor(img,cv2.COLOR_GRAY2BGR)
circles = cv2.HoughCircles(img,cv2.cv.CV_HOUGH_GRADIENT,1,5,param1=200,param2=100,minRadius=0,maxRadius=0)
circles = np.uint16(np.around(circles))
for i in circles[0,:]:
# pinpoint hole
cv2.circle(cimg,(i[0],i[1]),2,(0,0,255),3)
cv2.imshow('holes detected',cimg)
cv2.waitKey(0)
cv2.destroyAllWindows()
Run Code Online (Sandbox Code Playgroud)
检测到的孔很少而且很远.有什么我可以做的来提高这个例子的准确性,或者这不是实现这个目标的最佳方法吗?
这是一个示例图像,只是为了显示我想要找到的"洞"的各种尺寸/形状.

示例2按要求

我有一个关于计算机视觉的问题; 似乎是一个普遍的问题,但无论如何,只是想知道你是否有线索.我想知道是否有一种有效的方法来区分纹理图像(或具有重复模式的照片)之间的什么,比如真实的照片?模式可以具有精确的重复,或者只是具有主要的相似性.实际上我试图看到给定一个图像,如果有可能检测到它是纹理或基于图案的图像,那实时可能?
例如,这三个在我们的上下文中被视为纹理:
http://www.bigchrisart.com/sites/default/files/video/TR_Texture_RockWall.jpg http://www.colourbox.com/preview/4440275-144135-seamless-geometric-op-art-texture.jpg
谢谢!
当我在OpenCV中使用BRISK进行特征检测和描述时,我遇到了性能问题.
基本上我尝试匹配从这个图像得到的所有描述符:
我使用基于flann匹配器的LSH算法和BRISK进行特征检测和描述,从图像数据库中获取所有描述符.
我的图像数据库由242个图像组成.在该242个图像中,存在与在上述"复杂"图像查询中分别拍摄的每个对象相对应的三个图像.
以下是用于BRISK检测的参数(默认opencv参数):Treshold:30,Octaves:4,Pattern scale:1.0.
在使用最佳匹配技术进行flann匹配之后(图像查询中的每个描述符与数据库描述符集中最近的邻域相关联),我的算法输出按匹配百分比排序的数据库图像列表.以下是四个第一个结果:
我使用ORB作为特征检测和描述来比较这些结果.以下是使用的参数:特征数量:2000,比例因子:1.2,金字塔等级数量:8.
以下是我得到的结果:
正如您所看到的,ORB的结果要好得多.首先,在数据库中的每个图像上检测到更多的关键点,并且匹配的百分比对于好的对象明显更好.此外,良好对象的匹配百分比与错误对象的匹配百分比之间的差距更为显着.
我想知道为什么BRISK探测器检测到的关键点比ORB探测器少得多.我已经做了不同的测试来弄清楚如何用BRISK探测器探测更多的关键点(降低阈值,减少八度数).我确实可以检测到更多的关键点,但与ORB检测器的差异仍然非常重要.你知道为什么BRISK探测器有这样的行为吗?
我的OpenCV版本是2.4.8,但我根据这些声明尝试了2.4.4和2.4.9版本的BRISK检测部分:
http://code.opencv.org/issues/2491和BRISK特征检测器检测到零关键点而没有改进.
我还尝试将ORB检测器与BRISK描述相结合.匹配结果优于第一种方法(完全BRISK),但比第二种方法(完整ORB)更差:
请注意,在方法2和方法3中,每个图像上检测到的关键点数量并不相同.实际上,当我在测试图像上运行此代码时(此处为螺栓图像):
// BRISK parameters
int Threshl=30;
int Octaves=4;
float PatternScales=1.0f;
// ORB parameters
int nFeatures=2000;
float scaleFactor=1.2f;
int nLevels=8;
BRISK BRISKD(Threshl, Octaves, PatternScales);
ORB ORBD(nFeatures, scaleFactor, nLevels);
vector<KeyPoint> …Run Code Online (Sandbox Code Playgroud) 我的目标是识别特定类型的交通标志:实时视频中的红色圆圈.
python opencv image-recognition computer-vision scikit-image
在没有回答这个问题之后,我最终遇到了一些有趣的看起来可能的解决方案:
设置好Canny Edge Detector,参考其文档并实现Robust Matcher我链接的第一页中所示的内容之后,我获得了一些徽标/衣服图片,并且将两者结合起来取得了不错的成绩:

但是在其他非常相似的情况下,它关闭了:

与“完全相同”设计相同的不同徽标图像,与上述服装图像相同。
这让我感到奇怪,是否有一种方法可以匹配图像上定义给定图像某些区域的几个特定点?
因此,不是让图像读入然后进行的所有匹配,而是keypoints丢弃“坏” keypoints等。是否有可能让系统知道一个keypoint相对于另一个的位置,然后丢弃一个图像上正确的匹配彼此相邻,但彼此的位置完全不同吗?
(如左图所示,淡蓝色和宝蓝色“匹配”彼此相邻,但在右图的完全分开的部分中匹配)
编辑
对于米卡

“矩形”绘制在(在油漆中添加的)白盒的中心。
cv::Mat ransacTest(const std::vector<cv::DMatch>& matches, const std::vector<cv::KeyPoint>& trainKeypoints, const std::vector<cv::KeyPoint>& testKeypoints, std::vector<cv::DMatch>& outMatches){
// Convert keypoints into Point2f
std::vector<cv::Point2f> points1, points2;
cv::Mat fundemental;
for (std::vector<cv::DMatch>::const_iterator it= matches.begin(); it!= matches.end(); ++it){
// Get the position of left keypoints
float x= trainKeypoints[it->queryIdx].pt.x;
float y= trainKeypoints[it->queryIdx].pt.y;
points1.push_back(cv::Point2f(x,y));
// Get the position of …Run Code Online (Sandbox Code Playgroud) 我需要使用OpenCV在图像中找到最新颜色。我引用了https://docs.opencv.org/2.4/modules/imgproc/doc/histograms.html?highlight=calchist,当我运行该代码时,我得到的HS直方图如下图所示。如何从该直方图中辨别出当前颜色?有人可以告诉我如何使用HSV的直方图在图像中获得最当前的颜色吗?(我正在使用C ++)