我试图找到一种方法来打破已经自适应阈值化的扫描文档中的文本行.现在,我存储文档为无符号的整数0到255的像素值,并且这是我在像素的平均值中的每一行,以及我基于像素值的平均值是否是线分割成的范围大于250,然后我取每个范围的线的中位数.但是,这种方法有时会失败,因为图像上可能会出现黑色斑点.
是否有更加抗噪的方式来完成这项任务?
编辑:这是一些代码."扭曲"是原始图像的名称,"剪切"是我想要分割图像的地方.
warped = threshold_adaptive(warped, 250, offset = 10)
warped = warped.astype("uint8") * 255
# get areas where we can split image on whitespace to make OCR more accurate
color_level = np.array([np.sum(line) / len(line) for line in warped])
cuts = []
i = 0
while(i < len(color_level)):
if color_level[i] > 250:
begin = i
while(color_level[i] > 250):
i += 1
cuts.append((i + begin)/2) # middle of the whitespace region
else:
i += 1
Run Code Online (Sandbox Code Playgroud)
我试图在接受用户输入的jupyter笔记本上运行程序,我无法弄清楚如何让它读取标准输入.例如,如果我使用shift-enter运行代码:
a = input()
print(a)
Run Code Online (Sandbox Code Playgroud)
单元格表示它正在运行,但不接受来自我的输入.如何让它接受输入?
假设我有以下Pandas Dataframe:
df = pd.DataFrame({"a" : [1,2,3], "b" : [[1,2],[2,3,4],[5]]})
a b
0 1 [1, 2]
1 2 [2, 3, 4]
2 3 [5]
Run Code Online (Sandbox Code Playgroud)
我如何"取消堆叠""b"列中的列表以将其转换为数据帧:
a b
0 1 1
1 1 2
2 2 2
3 2 3
4 2 4
5 3 5
Run Code Online (Sandbox Code Playgroud) 我正在尝试将我的 colab 笔记本保存到一个私有 Github 存储库,但是当我单击“将副本保存到 Github”时,它和我所有其他私有存储库都没有出现在下拉列表中。任何帮助,将不胜感激。
只是好奇,有没有一个特殊的原因,为什么Python 3.x没有安装在Windows上运行默认命令行"python3",就像在Mac OSX和Linux上一样?是否有某种方式来配置Python,使其像这样运行?谢谢.
编辑:我想补充,我要求的原因是因为我有我的计算机上安装Python 2和3都翻译,所以它是模糊的,因为二者都是使用命令"蟒蛇"运行.
为什么sklearn中的CountVectorizer忽略了代词"I"?
ngram_vectorizer = CountVectorizer(analyzer = "word", ngram_range = (2,2), min_df = 1)
ngram_vectorizer.fit_transform(['HE GAVE IT TO I'])
<1x3 sparse matrix of type '<class 'numpy.int64'>'
ngram_vectorizer.get_feature_names()
['gave it', 'he gave', 'it to']
Run Code Online (Sandbox Code Playgroud) 说我有以下的数据帧,我想改变列的两个元素c是对应于列前两个元素a是等于1平等2.
>>> df = pd.DataFrame({"a" : [1,1,1,1,2,2,2,2], "b" : [2,3,1,4,5,6,7,2], "c" : [1,2,3,4,5,6,7,8]})
>>> df.loc[df["a"] == 1, "c"].iloc[0:2] = 2
>>> df
a b c
0 1 2 1
1 1 3 2
2 1 1 3
3 1 4 4
4 2 5 5
5 2 6 6
6 2 7 7
7 2 2 8
Run Code Online (Sandbox Code Playgroud)
第二行中的代码不起作用,因为iloc设置了副本,因此不修改原始数据帧.我该怎么做?
说我有一个pandas DataFrame,例如:
A B id
0 1 1 0
1 2 1 0
2 3 2 1
3 0 2 1
Run Code Online (Sandbox Code Playgroud)
假设我想组合具有相同id的行,以便行中的其他元素放在一个列表中,以便上面的数据帧将变为:
A B id
0 [1, 2] [1, 1] 0
1 [3, 0] [2, 2] 1
Run Code Online (Sandbox Code Playgroud)
作为前两行,最后两行具有相同的id.大熊猫有功能吗?我知道pandas groupby命令,但我希望返回类型也是一个数据帧.谢谢.
当尝试对 sklearn 中的某些数据使用特征选择和 f_classif(方差分析测试)时,我收到以下警告消息:
C:\Users\Alexander\Anaconda3\lib\site-packages\sklearn\feature_selection\univariate_selection.py:113:UserWarning:功能...是不变的。用户警告)
警告消息指示的特征是恒定的,显然 p 值为 0。我无法找到有关导致此警告的原因的任何信息。此特定函数的 github 文件位于:https://github.com/scikit-learn/scikit-learn/blob/master/sklearn/feature_selection/univariate_selection.py
任何帮助将不胜感激,谢谢。
我想传递一个我写入Flask jsonify函数的numpy JSON序列化器,但我找不到办法做到这一点.我无法使用json.dumps,因为我必须在处理错误消息时设置Flask响应的status_code.有没有办法将JSON序列化程序作为参数传递,类似于使用如下所示的cls参数json.dumps:将numpy类型转换为python?我的代码如下; 谢谢.
import json
import numpy as np
from flask import Flask, jsonify
class JSON_Improved(json.JSONEncoder):
'''
Used to help jsonify numpy arrays or lists that contain numpy data types.
'''
def default(self, obj):
if isinstance(obj, np.integer):
return int(obj)
elif isinstance(obj, np.floating):
return float(obj)
elif isinstance(obj, np.ndarray):
return obj.tolist()
else:
return super(MyEncoder, self).default(obj)
app = Flask(__name__)
@app.errorhandler(ErrorMessage)
def handle_invalid_usage(error):
response = jsonify(error.to_dict())
response.status_code = error.status_code
return response
Run Code Online (Sandbox Code Playgroud) python ×9
dataframe ×3
pandas ×3
scikit-learn ×2
flask ×1
indexing ×1
json ×1
jupyter ×1
list ×1
numpy ×1
ocr ×1
opencv ×1
python-3.x ×1
scikit-image ×1