标签: image-recognition

用于图像识别的C++库:包含字符串的图像

有没有人知道用于拍摄图像并在其上执行图像识别的c ++库,以便它可以根据给定的字体和/或字体高度找到字母?即使是不允许你选择字体的那个也不错(例如:readLetters(Image image).

c++ ocr fonts image-recognition

6
推荐指数
2
解决办法
5033
查看次数

简单的图像识别:网格上的黑色和白色宝石

我目前想知道一个应该很容易的图像识别问题,但到目前为止找不到一个简单的解决方案.

输入是一个大约1百万像素的矩形图片,显示轻木表面.它上面有一个薄但可见的网格.网格为黑色黑色,规则且几乎为正方形(比宽度长约8%).网格大小正好是19x19.一般的纸板颜色是"木材",它可以变化,但往往是浅棕色.(更多信息)

表面上放置了许多小的圆形黑色和白色宝石.它们总是放在交叉点上,但由于人为错误,它们可能会稍微偏离.它们的颜色是纯黑色和白色.

该板覆盖0至约300块石头(361个交叉点的80%).黑色和白色宝石的数量大致相同.

边界的大小(没有放置石头的板的边缘)变化,但是已知是"小".

光线可能会导致棋盘上出现阴影.此外,它会在石头上(在光线方向上)出现一个白点.

goban

我想检测一下石头在栅格上的位置.

我的想法是查看每个像素的亮度并将它们分为3类:光(白色宝石),中(宝石)和黑色(黑色宝石).具有许多黑色像素的区域被认为是黑色宝石,依此类推.

之后,黑色和白色区域的大小可用于计算实际网格大小.

另一个想法是识别网格线并使用它们来计算网格大小和位置.由于线条非常薄(通常被石头覆盖),我不知道该怎么做.

我很想听听你关于这个问题的想法.是否有适合的算法?你能想到很有帮助的酷炫技巧吗?我疯了,这个问题无法解决?我在C#工作,但欢迎使用任何语言.

image-recognition

6
推荐指数
1
解决办法
2436
查看次数

CNN上的数字识别

我正在测试卷积神经网络上的打印数字(0-9).它在MNIST数据集上提供99%以上的准确率,但当我尝试使用安装在计算机上的字体(Ariel,Calibri,Cambria,Cambria math,Times New Roman)并训练字体生成的图像(每种字体104张图像(总计) 25种字体 - 每种字体4张图像(差别很小))训练误差率不低于80%,即准确率为20%.为什么?

这是"2"号图像样本 -

我将每张图像调整为28 x 28.

这里有更多细节: -

训练数据大小= 28 x 28图像.网络参数 - 作为LeNet5网络架构 -

Input Layer -28x28
| Convolutional Layer - (Relu Activation);
| Pooling Layer - (Tanh Activation)
| Convolutional Layer - (Relu Activation)
| Local Layer(120 neurons) - (Relu)
| Fully Connected (Softmax Activation, 10 outputs)
Run Code Online (Sandbox Code Playgroud)

这样可以在MNIST上实现99 +%的准确率.计算机生成的字体为何如此糟糕?CNN可以处理大量的数据差异.

ocr machine-learning image-recognition handwriting-recognition deep-learning

6
推荐指数
1
解决办法
1108
查看次数

React Native 中文本的图像识别

这可能是一个疯狂的问题,但我已经看到应用程序完成了。是否有任何类型的 API 可用于识别图像中的文本(Chase 识别支票上的数字的方式),或者是否有可用于搜索(比如谷歌)基于图像的信息的 API ? 例如,如果我拍了一张商业标志的照片,谷歌会搜索符合该标志的商业列表吗?

我知道疯狂的问题,但我想知道它是否可以完成。如果可以,可以和 React Native 一起使用吗?谢谢!

image image-recognition ios react-native

6
推荐指数
1
解决办法
9398
查看次数

如何从VNClassificationObservation获取对象rect/coordinates

有来自的问题VNClassificationObservation.

我的目标是识别对象并使用对象名称显示弹出窗口,我能够获得名称,但我无法获得对象坐标或框架.

这是代码:

let handler = VNImageRequestHandler(cvPixelBuffer: pixelBuffer, options: requestOptions)
do {
    try handler.perform([classificationRequest, detectFaceRequest])
} catch {
    print(error)
}
Run Code Online (Sandbox Code Playgroud)

然后我处理

func handleClassification(request: VNRequest, error: Error?) {
      guard let observations = request.results as? [VNClassificationObservation] else {
          fatalError("unexpected result type from VNCoreMLRequest")
      }

    // Filter observation
    let filteredOservations = observations[0...10].filter({ $0.confidence > 0.1 })

    // Update UI
   DispatchQueue.main.async { [weak self] in

    for  observation in filteredOservations {
            print("observation: ",observation.identifier)
            //HERE: I need to display popup with observation name
    } …
Run Code Online (Sandbox Code Playgroud)

image-recognition ios swift ios11 coreml

6
推荐指数
2
解决办法
2155
查看次数

为什么我的项目无法识别Inceptionv3机器学习模型?

我正在使用Inception v3机器学习模型在Swift中构建一个基本的图像识别应用程序.我拖放了项目文件夹中的Inceptionv3.mlmodel,并确保勾选了"如果需要,复制项目"选项.

在检测功能内:

func detect(image: CIImage) {

    guard let model = try? VNCoreMLModel(for: Inceptionv3().model) else {
        fatalError("Loading CoreML Model Failed!")
    }

    let request = VNCoreMLRequest(model: model) { (request, error) in
        guard let results = request.results as? [VNClassificationObservation] else {
            fatalError("Model failed to process")
    }

        if let firstResult = results.first {
            self.navigationItem.title = firstResult.identifier
        }

}
Run Code Online (Sandbox Code Playgroud)

我收到以下消息:

使用未解析的标识符'Inceptionv3'

此外,当我在项目浏览器上单击Inceptionv3.mlmodel文件时,我收到以下消息:

接口生成仅适用于有效目标

但我知道它应该是这样的:

Inceptionv3(Swift生成源代码)

旁边有一个小箭头,可以让您访问该课程.

有任何想法吗?

machine-learning image-recognition swift

6
推荐指数
2
解决办法
2428
查看次数

如何通过tesseract OCR识别带有少量数学符号的文本?

我的文字包含一些不那么复杂的数学符号,如下所示。

在此处输入图片说明

在此处输入图片说明

Tesseract OCR 默认无法识别此类数学符号(+-、角度)。我怎样才能通过 tesseract 识别这样的数学符号?

ocr tesseract image-recognition

6
推荐指数
1
解决办法
2315
查看次数

与Python相比,C#中的OpenCV MatchTemplate太慢了

我已经在Python中编写了一个解决方案,该解决方案效果很好,但是需要安装几个库以及许多专业设置才能工作.我决定在Visual Studio Community 2017上使用C#中的GUI构建它,但在第一个成功的函数中,结果比Python慢​​.哪个IMO实际上应该更快.

代码本质上只是在大海捞针图像搜索中,通过从文件夹中获取所有图像并在大海捞针中测试每个针(总共60个图像),在python中我返回字符串,但在C#中我只是打印.

我在Python中的代码如下:

def getImages(tela):
    retorno = []
    folder = 'Images'
    img_rgb = cv2.imread(tela)
    for filename in os.listdir(folder):
        template = cv2.imread(os.path.join(folder,filename))
        w, h = template.shape[:-1]
        res = cv2.matchTemplate(img_rgb, template, cv2.TM_CCOEFF_NORMED)
        threshold = .96
        loc = np.where(res >= threshold)
        if loc[0]>0:
            retorno.append(filename[0]+filename[1].lower())
            if len(retorno)> 1:
                return retorno
Run Code Online (Sandbox Code Playgroud)

在C#中:

Debug.WriteLine(ofd.FileName);
Image<Bgr, byte> source = new Image<Bgr, byte>(ofd.FileName);
string filepath = Directory.GetCurrentDirectory().ToString()+"\\Images";
DirectoryInfo d = new DirectoryInfo(filepath);
var files = d.GetFiles();
foreach (var fname in files){
    Image<Bgr, byte> template = …
Run Code Online (Sandbox Code Playgroud)

.net c# python image-processing image-recognition

6
推荐指数
2
解决办法
1072
查看次数

当图像以 0 到 9 的小数进行评级时,Earth Mover Loss 的输入类型应该是什么(Keras、Tensorflow)

我正在尝试实施谷歌的 NIMA 研究论文,他们对图像质量进行评分。我正在使用 TID2013 数据集。我有 3000 张图像,每张图像的分数从 0.00 到 9.00

df.head()
>>
Image Name          Score
0   I01_01_1.bmp    5.51429
1   i01_01_2.bmp    5.56757
2   i01_01_3.bmp    4.94444
3   i01_01_4.bmp    4.37838
4   i01_01_5.bmp    3.86486

Run Code Online (Sandbox Code Playgroud)

找到了下面给出的损失函数代码

def earth_mover_loss(y_true, y_pred):
    cdf_true = K.cumsum(y_true, axis=-1)
    cdf_pred = K.cumsum(y_pred, axis=-1)
    emd = K.sqrt(K.mean(K.square(cdf_true - cdf_pred), axis=-1))
    return K.mean(emd)
Run Code Online (Sandbox Code Playgroud)

我将模型构建的代码编写为:

base_model = InceptionResNetV2(input_shape=(W,H, 3),include_top=False,pooling='avg',weights='imagenet')
for layer in base_model.layers: 
    layer.trainable = False

x = Dropout(0.45)(base_model.output)
out = Dense(10, activation='softmax')(x) # there are 10 classes

model = Model(base_model.input, out) …
Run Code Online (Sandbox Code Playgroud)

python image-recognition deep-learning keras tensorflow

6
推荐指数
1
解决办法
165
查看次数

如何检测射击目标上的弹孔

我目前正在处理我的第一个图像处理作业(在 Python 中使用 OpenCV,但我对任何库和语言都持开放态度)。我的任务是计算用户上传的图像中一到几个射击孔的精确分数(到十分之一点)。问题是用户上传的图像可以在不同的背景下拍摄(尽管它永远不会匹配目标平均颜色的其余部分)。因此,我排除了在互联网上找到的大多数解决方案以及我能想到的大多数解决方案。

我的问题总结

弹孔识别:

  • 弹孔可以在不同的背景上
  • 弹孔可以重叠
  • 单个弹孔的大小总是相似的(所有计算出的射击目标只使用一种口径)
    • 我能够计算出非常精确的射击孔半径

射击目标:

  • 我的应用程序将计算两种类型的射击目标(图片如下)
  • 可在不同光照条件下拍摄目标照片

射击目标 1 示例:

射击目标 1 示例

射击目标2示例:

在此处输入图片说明

射击目标示例以在以下位置找到弹孔:

到目前为止我尝试过的:

  1. 颜色分割
    • 由于上述原因
  2. 差异匹配
    • 为了能够实际比较目标图像(空的和开火的),我编写了一个算法,通过其最大的外圆(其半径 + 子弹大小(以像素为单位)裁剪目标)
    • 在那之后,我可能已经尝试了在互联网上找到的所有图像比较方法
    • 例如:蛮力匹配、直方图比较、特征匹配等等
    • 我在这里失败主要是因为两个比较图像上的颜色有点不同,还因为其中一张图像有时以很小的角度拍摄,因此圆圈没有重叠,它们被计算为差异
  3. 霍夫圆算法
    • 因为我知道目标上射击的半径(以像素为单位),所以我想我可以使用这个算法简单地检测它们
    • 在玩了几个小时/几天的 HoughCircles 函数参数后,我认为如果不根据上传的图像更改参数,它永远不会对所有上传的图像起作用
  4. 弹孔的边缘检测和轮廓查找
    • 在使用图像平滑算法(如模糊、双边滤波、变形等)时,我尝试了两种边缘检测方法(Canny 和 Sobel)。
    • 之后,我试图找到边缘检测图像中的所有轮廓,并过滤掉具有相似中心点的目标圆圈
    • 起初这似乎是解决方案,但在几个测试图像上它无法正常工作:/

在这一点上,我已经没有想法了,因此来到这里寻求任何可以推动我进一步发展的建议或想法。是否有可能根本没有解决如此复杂的射击目标识别的方法,还是我太缺乏经验而无法想出它?

预先感谢您的任何帮助。

编辑:我知道我可以简单地在射击目标后面放一张单色纸,这样就能找到子弹。这不是我希望应用程序工作的方式,因此它不是我的问题的有效解决方案。

python opencv image-processing image-recognition

6
推荐指数
1
解决办法
851
查看次数