【问题标题】:Manipulating recognized numbers from a numbers recognition script in python从python中的数字识别脚本中操作识别的数字
【发布时间】:2018-09-08 14:46:51
【问题描述】:

我在 python 中有一个可行的数字识别脚本,它可以工作并产生这个结果

这是使用 opencv、sklearn 和 skimage 创建的。如何将识别出的图像保存在文件中,以便以后在不同的计算中使用?

【问题讨论】:

  • 您要保存上面显示的输出吗?还是只有图像中被识别为数字的部分?请具体
  • 只有图像中被识别为数字的部分

标签: python opencv scikit-learn scikit-image


【解决方案1】:

您需要将原始图像的裁剪保存到单独的文件中。如果没有看到您的代码,就无法确定如何存储作物,但您需要访问用于绘制绿色矩形的值。然后可以使用绘制绿色矩形的相同值通过切片图像来保存图像的裁剪。

如果您使用 opencv cv2.rectangle() 函数来绘制框,则意味着您拥有矩形的左上角和右下角。但是,numpy 切片的格式是:

crop_image = image[y:y+h, x:x+w]

因此,您必须计算高度和宽度值(即height = (xmax - xmin) + xmin 和宽度相同)。

再次,因为您没有代码显示我的猜测是您有一个绘制框的循环。如果在 cv2.rectange() 函数下面是这种情况,您可以编写:

crop_image = image[ymin: (ymax-ymin)+ymin, xmin: (max-min)+xmin]
cv2.imwrite('images/prediction_'+predicted_value+'_'+count+'.jpg', crop_image)

在你的代码中引用这个来获得 xmin/xmax/ymin/ymax 值:

cv2.rectange(img, (xmin, ymin), (xmax, ymax), (R, G, B), Thickness)

其中 image 是您对其进行预测的输入图像,predicted_value 是您对数字所做的预测,而 count 是基本计数,以确保您不会覆盖文件。您可以通过使用 for 循环中的 enumerate 函数来获得它:即for count, x in enumerate(data)

输出文件将保存到一个名为 images 的文件夹中(假设您之前已经创建了该文件夹),文件名如下:

prediction_3_0.jpg
prediction_4_1.jpg
prediction_2_2.jpg
prediction_3_3.jpg
prediction_5_4.jpg

这样,当您回读它们时,您就知道预测的数字是多少。如果我的任何假设有误,请告诉我,我可以编辑答案。

【讨论】:

  • cv2.imwrite 确实有效,但它允许我保存为图像。这里的目标是在我识别出我用它来执行一些计算的数字并将其保存为另一个图像之后并不理想。
  • 我不是 100% 确定你的意思。但是你的意思是你想存储图像的裁剪以供进一步计算吗?如果是这样,您可以在脚本开头创建一个空列表,即cropped_images = [],然后您可以只使用cropped_images.append(crop_image) 而不是cv2.imwrite('filename.jpg', crop_image)。最简单的做法是将其转换为带有 cropped_images = np.array(cropped_images) 的 numpy 数组,然后您可以通过对其进行索引来访问您想要的任何图像。
猜你喜欢
  • 1970-01-01
  • 2023-04-05
  • 2015-10-21
  • 1970-01-01
  • 1970-01-01
  • 2020-01-21
  • 2015-06-27
  • 2010-11-02
  • 1970-01-01
相关资源
最近更新 更多