我有发票图片,我想检测上面的文字.所以我计划使用两个步骤:首先是识别文本区域,然后使用OCR识别文本.
我在python中使用OpenCV 3.0.我能够识别文本(包括一些非文本区域),但我还想从图像中识别文本框(也不包括非文本区域).
img = cv2.imread('/home/mis/Text_Recognition/bill.jpg')
mser = cv2.MSER_create()
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) #Converting to GrayScale
gray_img = img.copy()
regions = mser.detectRegions(gray, None)
hulls = [cv2.convexHull(p.reshape(-1, 1, 2)) for p in regions]
cv2.polylines(gray_img, hulls, 1, (0, 0, 255), 2)
cv2.imwrite('/home/mis/Text_Recognition/amit.jpg', gray_img) #Saving
Run Code Online (Sandbox Code Playgroud)
现在,我想识别文本框,并删除/取消识别发票上的任何非文本区域.我是OpenCV的新手,也是Python的初学者.我能够在MATAB示例和C++示例中找到一些示例,但如果我将它们转换为python,则需要花费大量时间.
有没有使用OpenCV的python的例子,或者任何人都可以帮助我吗?
我目前正致力于实现早先用Python构建的Gurobi线性程序模型的C#版本.我有许多CSV文件,我从中导入数据和创建pandas数据帧,我从这些数据帧中获取列,以创建我在线性程序中使用的变量.使用数据帧创建变量的python代码如下:
dataPath = "C:/Users/XYZ/Desktop/LinearProgramming/TestData"
routeData = pd.DataFrame.from_csv(os.path.join(dataPath, "DirectLink.csv"), index_col=None)
#Creating 3 Python-dictionaries from Python Multi-Dict using column names and keeping RouteID as the key
routeID, transportCost, routeType = multidict({x[0]:[x[1],x[2]] for x in routeData[['RouteID', 'TransportCost','RouteType']].values})
Run Code Online (Sandbox Code Playgroud)
示例:如果csv结构如下:
RouteID RouteEfficiency TransportCost RouteType
1 0.8 2.00 F
2 0.9 5.00 D
3 0.7 6.00 R
4 0.6 3.00 T
Run Code Online (Sandbox Code Playgroud)
3个变量应该是:RouteID:1 2 3 4
运输成本:
1:2.00
2:5.00
3:6.00
4:3.00
Run Code Online (Sandbox Code Playgroud)
RouteType:
1:F
2:D
3:R
4:T
Run Code Online (Sandbox Code Playgroud)
现在,我想创建一个执行相同任务的上述代码的C#版本,但我了解到C#不支持数据帧.我试着寻找一些替代品,但我找不到任何东西.请帮我解决一下这个.
我想使用Google的Tensorflow将类似图像返回到输入图像.
我已经在虚拟机CPU上的Ubuntu14.04上安装了来自http://www.tensorflow.org的 Tensorflow (使用PIP安装--pip和python 2.7).
我从下载了训练模型盗-V3(开始- 2015-12-05.tgz)http://download.tensorflow.org/models/image/imagenet/inception-2015-12-05.tgz是受过培训ImageNet大型视觉识别挑战使用2012年的数据,但我认为它内部包含神经网络和分类器(作为预测类别的任务).我还下载了classify_image.py文件,该文件在模型中的1000个类中的1个中对图像进行分类.
所以我有一个随机图像image.jpg,我正在运行测试模型.当我运行命令时:
python /home/amit/classify_image.py --image_file=/home/amit/image.jpg
Run Code Online (Sandbox Code Playgroud)
我得到以下输出:(使用softmax完成分类)
I tensorflow/core/common_runtime/local_device.cc:40] Local device intra op parallelism threads: 3
I tensorflow/core/common_runtime/direct_session.cc:58] Direct session inter op parallelism threads: 3
trench coat (score = 0.62218)
overskirt (score = 0.18911)
cloak (score = 0.07508)
velvet (score = 0.02383)
hoopskirt, crinoline (score = 0.01286)
Run Code Online (Sandbox Code Playgroud)
现在,手头的任务是从60,000张图像的数据库中找到与输入图像(image.jpg)类似的图像(jpg格式,并保存在/ home/amit/images的文件夹中).我相信这可以通过从初始-v3模型中删除最终分类层,并使用输入图像的特征集来查找所有60,000个图像的特征集的余弦距离来完成,并且我们可以返回距离较小的图像(cos 0 = 1)
请建议我解决此问题的方法,以及如何使用Python API执行此操作.
neural-network python-2.7 google-image-search deep-learning tensorflow
我已成功使用Python2.7 api为我自己的100个类重新训练了初始V3最终分类层,它给出了不错的结果,但并不是特别好.
我也有代码来重新训练整个网络,如下所示(谷歌代码),但这是资源和时间密集,我有40万张图像,所以不知道训练后的准确度是多少.
我想知道我是否可以重新培训最后几个完全连接的层中的一些,或者不仅仅是分类层,以便在一定程度上提高准确性,并且在资源和时间方面也不是计算上非常苛刻的.
我试图搜索很多,但找不到任何东西.有可能我想做什么?我需要帮助.
python neural-network deep-learning conv-neural-network tensorflow
我面临以下错误,我几乎尝试了Stackoverflow的每一个解决方案.我是android的新手,所以我可能不了解原因.我按照说明测试libgdx项目:https: //github.com/libgdx/libgdx/wiki/Setting-up-your-Development-Environment-%28Eclipse%2C-Intellij-IDEA%2C-NetBeans% 29
我按顺序安装了下面提到的工具:
现在,当我使用gdx-setup.jar生成一个非常基本的示例libgdx项目,并将包命名为my-gdx-game时,它创建了一个桌面版(java应用程序)和一个android版本(android应用程序)
我在通过jar构建项目时使用Build工具V 23.0.1.我的eclipse屏幕看起来像这样:
当我右键单击my-gdx-game-desktop和Run as Java应用程序时,它会成功运行并显示和图像(项目就是显示图像).
现在,对于android项目,我创建了一个AVD - Nexus 5,Android 4.4.2(api 19),CPU:ARM(armeabi-v7a),使用主机GPU.我的manifest.xml文件如下:
<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="23" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/GdxTheme" >
<activity
android:name="com.mygdx.game.AndroidLauncher"
android:label="@string/app_name"
android:screenOrientation="landscape"
android:configChanges="keyboard|keyboardHidden|orientation|screenSize">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Run Code Online (Sandbox Code Playgroud)
项目>属性> Android:仅选择Android 4.4.2(API 19)
现在,当我右键单击项目>运行为> android应用程序时,AVD打开并生成以下错误:
03-08 13:44:35.110: W/dalvikvm(1968): Unable to resolve superclass of Lcom/mygdx/game/AndroidLauncher; (3)
03-08 13:44:35.110: W/dalvikvm(1968): Link …Run Code Online (Sandbox Code Playgroud)