Showing preview only (2,173K chars total). Download the full file or copy to clipboard to get everything.
Repository: HuangCongQing/OpenCV
Branch: master
Commit: 5713577de082
Files: 21
Total size: 2.1 MB
Directory structure:
gitextract_u125kwrs/
├── .gitignore
├── 00.py
├── 01read_show.py
├── 01项目实战-信用卡数字识别/
│ └── template-matching-ocr/
│ ├── myutils.py
│ └── ocr_template_match.py
├── 02save.py
├── 02项目实战-文档扫描OCR识别/
│ └── Scan/
│ ├── .idea/
│ │ ├── document-scanner.iml
│ │ ├── misc.xml
│ │ ├── modules.xml
│ │ └── workspace.xml
│ ├── scan.py
│ └── test.py
├── LICENSE
├── README.md
├── dataset/
│ └── 2023-02-07-22_46_36.txt
├── practice/
│ └── vis/
│ ├── 01show_bbox.ipynb
│ ├── 02show_line.ipynb
│ └── 03show_text.ipynb
└── 基于python的Opencv项目实战/
├── 图像处理/
│ └── 图像处理-2(直方图&模板匹配).ipynb
└── 图像操作/
├── 图像基本操作.ipynb
└── 图像处理.ipynb
================================================
FILE CONTENTS
================================================
================================================
FILE: .gitignore
================================================
代码+资料
================================================
FILE: 00.py
================================================
import cv2
print(cv2.__version__)
================================================
FILE: 01read_show.py
================================================
# encoding:utf-8
import cv2
img = cv2.imread("./cat.jpg")
cv2.namedWindow("Image显示")
cv2.imshow("Image显示", img)
cv2.waitKey(0)
cv2.destroyAllWindows()
# https: // www.cnblogs.com/zangyu/p/5802142.html
================================================
FILE: 01项目实战-信用卡数字识别/template-matching-ocr/myutils.py
================================================
'''
Description: OCR-模板匹配 参考:https://www.bilibili.com/video/BV1oJ411D71z?t=11&p=9
Author: HCQ
Company(School): UCAS
Email: 1756260160@qq.com
Date: 2021-01-23 11:12:41
LastEditTime: 2021-01-25 12:28:10
FilePath: /OpenCV/01项目实战-信用卡数字识别/template-matching-ocr/myutils.py
'''
import cv2
# 轮廓排序
def sort_contours(cnts, method="left-to-right"):
reverse = False
i = 0
if method == "right-to-left" or method == "bottom-to-top":
reverse = True
if method == "top-to-bottom" or method == "bottom-to-top":
i = 1
boundingBoxes = [cv2.boundingRect(c) for c in cnts] #用一个最小的矩形(外接矩形),把找到的形状包起来x,y,h,w 根据x横坐标就可以排序
(cnts, boundingBoxes) = zip(*sorted(zip(cnts, boundingBoxes), # sorted
key=lambda b: b[1][i], reverse=reverse)) # reverse
return cnts, boundingBoxes
# resize
def resize(image, width=None, height=None, inter=cv2.INTER_AREA):
dim = None
(h, w) = image.shape[:2]
if width is None and height is None:
return image
if width is None:
r = height / float(h)
dim = (int(w * r), height)
else:
r = width / float(w)
dim = (width, int(h * r))
resized = cv2.resize(image, dim, interpolation=inter)
return resized
================================================
FILE: 01项目实战-信用卡数字识别/template-matching-ocr/ocr_template_match.py
================================================
'''
Description: OCR-模板匹配 参考:https://www.bilibili.com/video/BV1oJ411D71z?t=11&p=9
运行命令: python ocr_template_match.py -i xxx -t xxx
运行命令: python 01项目实战-信用卡数字识别/template-matching-ocr/ocr_template_match.py -i 01项目实战-信用卡数字识别/template-matching-ocr/images/credit_card_01.png -t 01项目实战-信用卡数字识别/template-matching-ocr/images/ocr_a_reference.png
Author: HCQ
Company(School): UCAS
Email: 1756260160@qq.com
Date: 2021-01-23 11:12:41
LastEditTime: 2021-01-25 14:07:18
FilePath: /OpenCV/01项目实战-信用卡数字识别/template-matching-ocr/ocr_template_match.py
'''
# 导入工具包
from imutils import contours
import numpy as np
import argparse
import cv2
import myutils
# 设置参数
ap = argparse.ArgumentParser()
ap.add_argument("-i", "--image", required=True,
help="path to input image")
ap.add_argument("-t", "--template", required=True,
help="path to template OCR-A image")
args = vars(ap.parse_args())
# 指定信用卡类型
FIRST_NUMBER = {
"3": "American Express",
"4": "Visa",
"5": "MasterCard",
"6": "Discover Card"
}
# 绘图展示
def cv_show(name,img):
cv2.imshow(name, img)
cv2.waitKey(0)
cv2.destroyAllWindows()
# ==========================开始 1 处理模板图片========================================
# 读取一个模板图像
img = cv2.imread(args["template"]) # 参数 01项目实战-信用卡数字识别/template-matching-ocr/images/ocr_a_reference.png
cv_show('img',img)
# 灰度图
ref = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
cv_show('ref',ref)
# 二值图像
ref = cv2.threshold(ref, 10, 255, cv2.THRESH_BINARY_INV)[1]
cv_show('ref',ref)
# 计算轮廓
#cv2.findContours()函数接受的参数为二值图,即黑白的(不是灰度图),cv2.RETR_EXTERNAL只检测外轮廓,cv2.CHAIN_APPROX_SIMPLE只保留终点坐标
#返回的list中每个元素都是图像中的一个轮廓
# 高版本没有第一个参数ref_了,只会返回后两个
# ref_, refCnts, hierarchy = cv2.findContours(ref.copy(), cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE) # 低版本
refCnts, hierarchy = cv2.findContours(ref.copy(), cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE) # 高版本
cv2.drawContours(img,refCnts,-1,(0,0,255),3)
cv_show('img',img)
print (np.array(refCnts).shape) # 多少轮廓
refCnts = myutils.sort_contours(refCnts, method="left-to-right")[0] #排序,从左到右,从上到下
digits = {}
# 遍历每一个轮廓
for (i, c) in enumerate(refCnts):
# 计算外接矩形并且resize成合适大小
(x, y, w, h) = cv2.boundingRect(c)
roi = ref[y:y + h, x:x + w] # x旋转区域
roi = cv2.resize(roi, (57, 88)) # resize
# 每一个数字对应每一个模板
digits[i] = roi
# =======================2 处理信用卡图片================================
# 初始化卷积核
rectKernel = cv2.getStructuringElement(cv2.MORPH_RECT, (9, 3))
sqKernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5)) # 核大小 5x5
#读取输入图像,预处理
image = cv2.imread(args["image"]) # 参数
cv_show('image',image)
image = myutils.resize(image, width=300)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
cv_show('gray',gray)
#礼帽操作,突出更明亮的区域(字体区域)
tophat = cv2.morphologyEx(gray, cv2.MORPH_TOPHAT, rectKernel) # rectKernel初始化核
cv_show('tophat',tophat)
#
gradX = cv2.Sobel(tophat, ddepth=cv2.CV_32F, dx=1, dy=0, #ksize=-1相当于用3*3的
ksize=-1)
gradX = np.absolute(gradX) # 只用x效果更好,随意没用xy梯度
(minVal, maxVal) = (np.min(gradX), np.max(gradX))
gradX = (255 * ((gradX - minVal) / (maxVal - minVal))) # 归一化
gradX = gradX.astype("uint8")
print (np.array(gradX).shape)
cv_show('gradX',gradX)
#通过闭操作(先膨胀,再腐蚀)将数字连在一起,形成四大块 背景也过滤了
gradX = cv2.morphologyEx(gradX, cv2.MORPH_CLOSE, rectKernel)
cv_show('gradX',gradX)
#THRESH_OTSU会自动寻找合适的阈值,适合双峰,需把阈值参数设置为0
thresh = cv2.threshold(gradX, 0, 255,
cv2.THRESH_BINARY | cv2.THRESH_OTSU)[1]
cv_show('thresh',thresh)
#再来一个闭操作
thresh = cv2.morphologyEx(thresh, cv2.MORPH_CLOSE, sqKernel) #再来一个闭操作
cv_show('thresh',thresh)
# 计算轮廓
# 高版本没有第一个参数thresh_了,只会返回后两个
# thresh_, threshCnts, hierarchy = cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL,
# cv2.CHAIN_APPROX_SIMPLE)
threshCnts, hierarchy = cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL,
cv2.CHAIN_APPROX_SIMPLE)
cnts = threshCnts # 最终轮廓
cur_img = image.copy()
cv2.drawContours(cur_img,cnts,-1,(0,0,255),3)
cv_show('img',cur_img)
locs = [] # 有价值的区域
# 遍历轮廓
for (i, c) in enumerate(cnts):
# 计算矩形
(x, y, w, h) = cv2.boundingRect(c)
ar = w / float(h) # 长宽比
# 选择合适的区域,根据实际任务来,这里的基本都是四个数字一组
if ar > 2.5 and ar < 4.0:
if (w > 40 and w < 55) and (h > 10 and h < 20):
#符合的留下来
locs.append((x, y, w, h))
# 将符合的轮廓从左到右排序
locs = sorted(locs, key=lambda x:x[0])
output = []
# 遍历每一个轮廓中的数字(四个大轮廓,每个轮廓里面有4个数字)
for (i, (gX, gY, gW, gH)) in enumerate(locs):
# initialize the list of group digits
groupOutput = []
# 根据坐标提取每一个组
group = gray[gY - 5:gY + gH + 5, gX - 5:gX + gW + 5] # 往外扩大一点范围
cv_show('group',group)
# 预处理(二值化)
group = cv2.threshold(group, 0, 255,
cv2.THRESH_BINARY | cv2.THRESH_OTSU)[1]
cv_show('group',group)
# 计算每一组的轮廓(4个数字,四个轮廓)
# 高版本没有第一个参数group_了,只会返回后两个
# group_,digitCnts,hierarchy = cv2.findContours(group.copy(), cv2.RETR_EXTERNAL,
# cv2.CHAIN_APPROX_SIMPLE)
digitCnts,hierarchy = cv2.findContours(group.copy(), cv2.RETR_EXTERNAL,
cv2.CHAIN_APPROX_SIMPLE)
digitCnts = contours.sort_contours(digitCnts,
method="left-to-right")[0]
# 计算每一组中的每一个数值
for c in digitCnts:
# 找到当前数值的轮廓,resize成合适的的大小
(x, y, w, h) = cv2.boundingRect(c)
roi = group[y:y + h, x:x + w]
roi = cv2.resize(roi, (57, 88))
cv_show('roi',roi)
# 计算匹配得分
scores = []
# 在模板中计算每一个得分=============================================================================
for (digit, digitROI) in digits.items():
# 模板匹配(和模板中的10个数字匹配)
result = cv2.matchTemplate(roi, digitROI,
cv2.TM_CCOEFF)
(_, score, _, _) = cv2.minMaxLoc(result)
scores.append(score)
# 得到最合适的数字
groupOutput.append(str(np.argmax(scores))) # score最大的下标
# 画出来
cv2.rectangle(image, (gX - 5, gY - 5),
(gX + gW + 5, gY + gH + 5), (0, 0, 255), 1)
cv2.putText(image, "".join(groupOutput), (gX, gY - 15),
cv2.FONT_HERSHEY_SIMPLEX, 0.65, (0, 0, 255), 2)
# 得到结果
output.extend(groupOutput)
# 打印结果
print("Credit Card Type: {}".format(FIRST_NUMBER[output[0]]))
print("Credit Card #: {}".format("".join(output)))
cv2.imshow("Image", image)
cv2.waitKey(0)
================================================
FILE: 02save.py
================================================
import cv2
import numpy as np
img = cv2.imread("./cat.jpg")
emptyImage = np.zeros(img.shape, np.uint8)
emptyImage2 = img.copy()
emptyImage3 = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
#emptyImage3[...]=0
cv2.imshow("EmptyImage", emptyImage)
cv2.imshow("Image", img)
cv2.imshow("EmptyImage2", emptyImage2)
cv2.imshow("EmptyImage3", emptyImage3)
cv2.imwrite("./img/cat2.jpg", img, [int(cv2.IMWRITE_JPEG_QUALITY), 5])
cv2.imwrite("./img/cat3.jpg", img, [int(cv2.IMWRITE_JPEG_QUALITY), 100])
cv2.imwrite("./img/cat.png", img, [int(cv2.IMWRITE_PNG_COMPRESSION), 0])
cv2.imwrite("./img/cat2.png", img, [int(cv2.IMWRITE_PNG_COMPRESSION), 9])
cv2.waitKey(0)
cv2.destroyAllWindows()
================================================
FILE: 02项目实战-文档扫描OCR识别/Scan/.idea/document-scanner.iml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<module type="PYTHON_MODULE" version="4">
<component name="NewModuleRootManager">
<content url="file://$MODULE_DIR$" />
<orderEntry type="inheritedJdk" />
<orderEntry type="sourceFolder" forTests="false" />
</component>
<component name="TestRunnerService">
<option name="PROJECT_TEST_RUNNER" value="Unittests" />
</component>
</module>
================================================
FILE: 02项目实战-文档扫描OCR识别/Scan/.idea/misc.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectRootManager" version="2" project-jdk-name="Python 2.7.10 (/usr/bin/python)" project-jdk-type="Python SDK" />
</project>
================================================
FILE: 02项目实战-文档扫描OCR识别/Scan/.idea/modules.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ProjectModuleManager">
<modules>
<module fileurl="file://$PROJECT_DIR$/.idea/document-scanner.iml" filepath="$PROJECT_DIR$/.idea/document-scanner.iml" />
</modules>
</component>
</project>
================================================
FILE: 02项目实战-文档扫描OCR识别/Scan/.idea/workspace.xml
================================================
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="ChangeListManager">
<list default="true" id="49a95eec-acf6-43d4-8b86-dd30a4773c88" name="Default" comment="" />
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
<option name="TRACKING_ENABLED" value="true" />
<option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" />
<option name="HIGHLIGHT_NON_ACTIVE_CHANGELIST" value="false" />
<option name="LAST_RESOLUTION" value="IGNORE" />
</component>
<component name="FileEditorManager">
<leaf>
<file leaf-file-name="__init__.py" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/pyimagesearch/__init__.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
</file>
<file leaf-file-name="scan.py" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/scan.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="210">
<caret line="14" column="24" lean-forward="true" selection-start-line="14" selection-start-column="24" selection-end-line="14" selection-end-column="24" />
<folding>
<element signature="e#82#138#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="transform.py" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/pyimagesearch/transform.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding>
<element signature="e#32#50#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
</leaf>
</component>
<component name="IdeDocumentHistory">
<option name="CHANGED_PATHS">
<list>
<option value="$PROJECT_DIR$/scan.py" />
</list>
</option>
</component>
<component name="ProjectFrameBounds">
<option name="x" value="708" />
<option name="y" value="23" />
<option name="width" value="972" />
<option name="height" value="1495" />
</component>
<component name="ProjectView">
<navigator currentView="ProjectPane" proportions="" version="1">
<flattenPackages />
<showMembers />
<showModules />
<showLibraryContents />
<hideEmptyPackages />
<abbreviatePackageNames />
<autoscrollToSource />
<autoscrollFromSource />
<sortByType />
<manualOrder />
<foldersAlwaysOnTop value="true" />
</navigator>
<panes>
<pane id="Scope" />
<pane id="ProjectPane">
<subPane>
<expand>
<path>
<item name="document-scanner" type="b2602c69:ProjectViewProjectNode" />
<item name="document-scanner" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="document-scanner" type="b2602c69:ProjectViewProjectNode" />
<item name="document-scanner" type="462c0819:PsiDirectoryNode" />
<item name="pyimagesearch" type="462c0819:PsiDirectoryNode" />
</path>
</expand>
<select />
</subPane>
</pane>
<pane id="Scratches" />
</panes>
</component>
<component name="RunDashboard">
<option name="ruleStates">
<list>
<RuleState>
<option name="name" value="ConfigurationTypeDashboardGroupingRule" />
</RuleState>
<RuleState>
<option name="name" value="StatusDashboardGroupingRule" />
</RuleState>
</list>
</option>
</component>
<component name="ShelveChangesManager" show_recycled="false">
<option name="remove_strategy" value="false" />
</component>
<component name="TaskManager">
<task active="true" id="Default" summary="Default task">
<changelist id="49a95eec-acf6-43d4-8b86-dd30a4773c88" name="Default" comment="" />
<created>1515441618959</created>
<option name="number" value="Default" />
<option name="presentableId" value="Default" />
<updated>1515441618959</updated>
</task>
<servers />
</component>
<component name="ToolWindowManager">
<frame x="708" y="23" width="972" height="1495" extended-state="0" />
<editor active="true" />
<layout>
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="0" side_tool="false" content_ui="combo" />
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="true" content_ui="tabs" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="false" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
<window_info id="Python Console" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
<window_info id="Debug" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Favorites" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="true" content_ui="tabs" />
<window_info id="Data View" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="-1" side_tool="false" content_ui="tabs" />
<window_info id="Cvs" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
<window_info id="Hierarchy" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="2" side_tool="false" content_ui="combo" />
<window_info id="Message" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Commander" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="0" side_tool="false" content_ui="tabs" />
<window_info id="Find" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.33" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="Inspection" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.4" sideWeight="0.5" order="5" side_tool="false" content_ui="tabs" />
<window_info id="Ant Build" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" show_stripe_button="true" weight="0.25" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
</layout>
</component>
<component name="VcsContentAnnotationSettings">
<option name="myLimit" value="2678400000" />
</component>
<component name="XDebuggerManager">
<breakpoint-manager />
<watches-manager />
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/pyimagesearch/__init__.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/pyimagesearch/transform.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding>
<element signature="e#32#50#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/pyimagesearch/imutils.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="0">
<caret line="0" column="0" lean-forward="false" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/scan.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="210">
<caret line="14" column="24" lean-forward="true" selection-start-line="14" selection-start-column="24" selection-end-line="14" selection-end-column="24" />
<folding>
<element signature="e#82#138#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</component>
</project>
================================================
FILE: 02项目实战-文档扫描OCR识别/Scan/scan.py
================================================
# 导入工具包
import numpy as np
import argparse
import cv2
# 设置参数
ap = argparse.ArgumentParser()
ap.add_argument("-i", "--image", required = True,
help = "Path to the image to be scanned")
args = vars(ap.parse_args())
def order_points(pts):
# 一共4个坐标点
rect = np.zeros((4, 2), dtype = "float32")
# 按顺序找到对应坐标0123分别是 左上,右上,右下,左下
# 计算左上,右下
s = pts.sum(axis = 1)
rect[0] = pts[np.argmin(s)]
rect[2] = pts[np.argmax(s)]
# 计算右上和左下
diff = np.diff(pts, axis = 1)
rect[1] = pts[np.argmin(diff)]
rect[3] = pts[np.argmax(diff)]
return rect
def four_point_transform(image, pts):
# 获取输入坐标点
rect = order_points(pts)
(tl, tr, br, bl) = rect
# 计算输入的w和h值
widthA = np.sqrt(((br[0] - bl[0]) ** 2) + ((br[1] - bl[1]) ** 2))
widthB = np.sqrt(((tr[0] - tl[0]) ** 2) + ((tr[1] - tl[1]) ** 2))
maxWidth = max(int(widthA), int(widthB))
heightA = np.sqrt(((tr[0] - br[0]) ** 2) + ((tr[1] - br[1]) ** 2))
heightB = np.sqrt(((tl[0] - bl[0]) ** 2) + ((tl[1] - bl[1]) ** 2))
maxHeight = max(int(heightA), int(heightB))
# 变换后对应坐标位置
dst = np.array([
[0, 0],
[maxWidth - 1, 0],
[maxWidth - 1, maxHeight - 1],
[0, maxHeight - 1]], dtype = "float32")
# 计算变换矩阵
M = cv2.getPerspectiveTransform(rect, dst)
warped = cv2.warpPerspective(image, M, (maxWidth, maxHeight))
# 返回变换后结果
return warped
def resize(image, width=None, height=None, inter=cv2.INTER_AREA):
dim = None
(h, w) = image.shape[:2]
if width is None and height is None:
return image
if width is None:
r = height / float(h)
dim = (int(w * r), height)
else:
r = width / float(w)
dim = (width, int(h * r))
resized = cv2.resize(image, dim, interpolation=inter)
return resized
# 读取输入
image = cv2.imread(args["image"])
#坐标也会相同变化
ratio = image.shape[0] / 500.0
orig = image.copy()
image = resize(orig, height = 500)
# 预处理
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
gray = cv2.GaussianBlur(gray, (5, 5), 0)
edged = cv2.Canny(gray, 75, 200)
# 展示预处理结果
print("STEP 1: 边缘检测")
cv2.imshow("Image", image)
cv2.imshow("Edged", edged)
cv2.waitKey(0)
cv2.destroyAllWindows()
# 轮廓检测
cnts = cv2.findContours(edged.copy(), cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)[1]
cnts = sorted(cnts, key = cv2.contourArea, reverse = True)[:5]
# 遍历轮廓
for c in cnts:
# 计算轮廓近似
peri = cv2.arcLength(c, True)
# C表示输入的点集
# epsilon表示从原始轮廓到近似轮廓的最大距离,它是一个准确度参数
# True表示封闭的
approx = cv2.approxPolyDP(c, 0.02 * peri, True)
# 4个点的时候就拿出来
if len(approx) == 4:
screenCnt = approx
break
# 展示结果
print("STEP 2: 获取轮廓")
cv2.drawContours(image, [screenCnt], -1, (0, 255, 0), 2)
cv2.imshow("Outline", image)
cv2.waitKey(0)
cv2.destroyAllWindows()
# 透视变换
warped = four_point_transform(orig, screenCnt.reshape(4, 2) * ratio)
# 二值处理
warped = cv2.cvtColor(warped, cv2.COLOR_BGR2GRAY)
ref = cv2.threshold(warped, 100, 255, cv2.THRESH_BINARY)[1]
cv2.imwrite('scan.jpg', ref)
# 展示结果
print("STEP 3: 变换")
cv2.imshow("Original", resize(orig, height = 650))
cv2.imshow("Scanned", resize(ref, height = 650))
cv2.waitKey(0)
================================================
FILE: 02项目实战-文档扫描OCR识别/Scan/test.py
================================================
# https://digi.bib.uni-mannheim.de/tesseract/
# 配置环境变量如E:\Program Files (x86)\Tesseract-OCR
# tesseract -v进行测试
# tesseract XXX.png 得到结果
# pip install pytesseract
# anaconda lib site-packges pytesseract pytesseract.py
# tesseract_cmd 修改为绝对路径即可
from PIL import Image
import pytesseract
import cv2
import os
preprocess = 'blur' #thresh
image = cv2.imread('scan.jpg')
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
if preprocess == "thresh":
gray = cv2.threshold(gray, 0, 255,cv2.THRESH_BINARY | cv2.THRESH_OTSU)[1]
if preprocess == "blur":
gray = cv2.medianBlur(gray, 3)
filename = "{}.png".format(os.getpid())
cv2.imwrite(filename, gray)
text = pytesseract.image_to_string(Image.open(filename))
print(text)
os.remove(filename)
cv2.imshow("Image", image)
cv2.imshow("Output", gray)
cv2.waitKey(0)
================================================
FILE: LICENSE
================================================
MIT License
Copyright (c) 2019 重庆同学
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
================================================
FILE: README.md
================================================
# OpenCV
1. 人机互动 2、物体识别 3、图像分割 4、人脸识别 5、动作识别 6、运动跟踪 7、机器人 8、运动分析 9、机器视觉 10、结构分析 11、汽车安全驾驶
官网: [opencv](https://github.com/opencv)/**[opencv](https://github.com/opencv/opencv)**
环境dev:win7/Ubuntu18.04,python35/36 + opencv3.4/4.1 + VScode
**OpenCV在Python中导入名称是cv2**
## Installation
两种方法呢
* 直接pip命令安装-直接命令法
```
pip3 install opencv-python
pip3 install opencv-contrib-python
pip3 install pytesseract
```
* 下载whl文件法
1. 先去官网 https://www.lfd.uci.edu/~gohlke/pythonlibs/#opencv,下载相应Python版本的OpenCV的whl文件,如本人下载的opencv_python‑3.4.1‑cp36‑cp36m‑win_amd64.whl,
2. 然后在whl文件所在目录下,命令`pip install opencv_python‑3.4.1‑cp36‑cp36m‑win_amd64.whl` 进行安装即可
## 基于python的Opencv项目实战
* 视频:https://www.bilibili.com/video/BV1oJ411D71z
* 代码&笔记:[基于python的Opencv项目实战](基于python的Opencv项目实战)
* [图像操作(图像读取 色彩空间转换 展示图像信息 读取视频 边界填充 数值计算 图像融合 )](基于python的Opencv项目实战/图像操作/图像基本操作.ipynb)
* 图像处理
* [图像阈值 图像平滑 形态学 图像梯度 边缘检测 图像金字塔 轮廓检测 傅里叶变换](基于python的Opencv项目实战/图像操作/图像处理.ipynb)
* [直方图&模板匹配](基于python的Opencv项目实战/图像处理/图像处理-2(直方图&模板匹配).ipynb)
* [01项目实战-信用卡数字识别/template-matching-ocr](01项目实战-信用卡数字识别/template-matching-ocr)
* 运行命令:`python 01项目实战-信用卡数字识别/template-matching-ocr/ocr_template_match.py -i 01项目实战-信用卡数字识别/template-matching-ocr/images/credit_card_01.png -t 01项目实战-信用卡数字识别/template-matching-ocr/images/ocr_a_reference.png`
* [02项目实战-文档扫描OCR识别](02项目实战-文档扫描OCR识别)
* TODO
## License
Copyright (c) [双愚](https://github.com/HuangCongQing/OpenCV). All rights reserved.
Licensed under the [MIT](https://github.com/HuangCongQing/OpenCV/blob/master/LICENSE) License.
================================================
FILE: dataset/2023-02-07-22_46_36.txt
================================================
356405 1 1 9 26 118 107 255 5 3 28.327288 3.553004 -26.717430
369174 1 1 -25 34 122 99 255 2 2 38.559292 -15.835225 -30.340343
374041 1 1 -23 39 124 117 255 3 2 42.190552 25.653763 -29.472292
381224 1 1 -32 36 126 112 255 1 2 48.003067 15.497784 -33.290531
393272 1 1 -29 54 130 125 255 2 1 56.948067 45.403759 -30.476133
412354 1 1 -26 43 136 94 255 2 1 72.138451 -28.693081 -32.268276
404451 1 1 -31 45 134 119 255 1 1 66.008598 31.879519 -32.621178
410078 1 1 -32 59 136 127 255 1 1 70.601868 49.118534 -33.317238
416491 1 1 -32 66 138 130 255 1 1 75.190765 57.164684 -33.653549
417248 1 1 -30 44 138 119 255 1 1 75.907547 30.578882 -32.666927
417989 1 1 -32 33 138 103 255 1 2 76.772820 -6.803614 -32.973663
431669 1 1 -31 54 143 124 255 1 1 86.951439 43.490513 -32.691147
424476 1 1 -33 58 140 126 255 1 1 81.370392 47.843109 -33.683994
440508 1 1 -20 75 146 135 255 3 1 94.337715 67.993233 -32.384380
437213 1 1 -33 34 145 109 255 1 2 91.352646 8.151801 -33.783737
435643 1 1 -32 42 144 117 255 1 1 90.508392 27.477747 -32.932198
445895 1 1 -29 72 148 78 255 2 1 98.442528 -65.344940 -32.174683
441954 1 1 -31 43 146 94 255 1 1 95.109467 -28.642881 -32.414982
445921 1 1 -31 58 148 85 255 1 1 98.678329 -49.138176 -32.416153
459603 1 1 -22 32 152 107 255 3 2 108.988739 2.358341 -32.817055
450835 1 1 -24 37 149 115 255 3 2 102.105904 22.080008 -30.044304
451659 1 1 -28 49 150 121 255 2 1 102.966118 37.039494 -32.164280
453244 1 1 -33 43 150 117 255 1 1 104.334503 27.506050 -33.663639
455523 1 1 -31 57 151 85 255 1 1 105.683861 -47.761414 -32.315712
465917 1 1 -20 59 154 84 255 3 1 114.282875 -51.858551 -29.598215
469879 1 1 -30 81 155 74 255 1 1 116.997658 -75.190231 -31.099030
472355 1 1 -25 39 156 94 255 2 2 119.100594 -28.041435 -28.058170
480291 1 1 -28 74 159 77 255 2 1 125.445877 -67.703423 -30.710955
474766 1 1 -30 38 157 97 255 1 2 120.903931 -21.227102 -31.767727
476274 1 1 -29 84 158 72 255 2 1 121.944908 -78.619164 -30.422203
475739 1 1 -31 92 157 143 255 1 1 121.263802 87.041252 -32.007008
481168 1 1 -31 37 159 97 255 1 2 126.059738 -19.478386 -31.892456
486104 1 1 -30 72 161 133 255 1 1 129.454178 65.212982 -31.692595
486053 1 1 -30 46 161 120 255 1 1 129.925491 33.226265 -32.261318
486154 1 1 -31 101 161 147 255 1 1 129.728302 96.424797 -32.020245
502083 1 1 -13 57 166 128 255 5 1 142.270874 52.416275 -23.522245
494956 1 1 -24 101 164 147 255 3 1 136.261154 97.504860 -26.352594
494065 1 1 -27 50 163 123 255 2 1 135.810562 40.678677 -29.505653
512396 1 1 -18 31 170 105 255 4 2 150.328918 -2.382168 -31.693666
498733 1 1 -30 52 165 88 255 1 1 139.698761 -41.751480 -31.253775
501054 1 1 -28 95 166 67 255 2 1 141.705627 -90.887863 -29.821276
504569 1 1 -17 107 167 151 255 4 1 144.335449 105.646332 -21.273010
510972 1 1 -16 109 169 152 255 4 1 148.864548 107.698647 -16.970018
514875 1 1 -12 48 170 126 255 5 1 151.887207 46.922947 -13.402631
517261 1 1 -11 40 171 122 255 5 1 154.223465 38.347336 -13.084762
517927 1 1 -19 53 172 87 255 4 1 154.921448 -45.005325 -28.543715
522851 1 1 -14 39 173 119 255 5 2 158.364746 32.029282 -23.676428
521109 1 1 -30 64 172 82 255 1 1 157.012146 -56.635349 -31.377432
523490 1 1 -30 74 173 77 255 1 1 158.802628 -68.170586 -30.972445
524421 1 1 -26 31 174 111 255 2 2 159.664185 13.221807 -28.307915
525377 1 1 -16 112 174 153 255 4 1 160.380051 111.019226 -16.875196
530852 1 1 -14 39 176 120 255 5 2 164.898254 32.815666 -21.231853
533845 1 1 -11 98 177 65 255 5 1 167.327866 -96.590073 -20.406582
531774 1 1 -18 111 176 152 255 4 1 165.410965 109.154205 -21.728746
536368 1 1 -29 36 178 97 255 2 2 169.294830 -19.818279 -30.370035
554818 1 1 12 11 184 111 255 5 4 183.278687 11.551304 1.359617
537223 1 1 -26 32 178 112 255 2 2 169.632782 14.603360 -28.580215
544503 1 1 -16 67 180 133 255 4 1 175.184631 64.824745 -16.995951
546179 1 1 -20 114 181 153 255 3 1 176.664886 111.945419 -24.007124
554051 1 1 -17 41 183 120 255 4 1 182.677826 32.493649 -25.910984
558655 1 1 -15 92 185 67 255 4 1 186.820084 -90.430153 -20.377075
560446 1 1 -26 39 186 118 255 2 2 187.694733 29.298435 -27.185402
563464 1 1 -18 87 187 70 255 4 1 190.304321 -84.634682 -21.734791
630111 1 1 -16 71 209 135 255 4 1 242.326279 69.544579 -17.901327
632500 1 1 -15 64 209 132 255 4 1 243.939896 62.813786 -16.640633
639586 1 1 -29 31 212 102 255 2 2 249.750092 -8.413772 -30.047022
================================================
FILE: practice/vis/01show_bbox.ipynb
================================================
{
"cells": [
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3.8.13 ('pcdet')",
"language": "python",
"name": "python3"
},
"language_info": {
"name": "python",
"version": "3.8.13"
},
"orig_nbformat": 4,
"vscode": {
"interpreter": {
"hash": "34e39c63690641fda45a9b5b3a54295d3c7c7609e6d639cc54d178959f811fe3"
}
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: practice/vis/02show_line.ipynb
================================================
{
"cells": [
{
"cell_type": "markdown",
"metadata": {},
"source": []
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 函数demo\n"
]
},
{
"cell_type": "code",
"execution_count": 1,
"metadata": {},
"outputs": [],
"source": [
"# -*- coding:utf-8 -*-\n",
"# By:Eastmount\n",
"import cv2\n",
"import numpy as np\n",
"\n",
"#创建黑色图像\n",
"img = np.zeros((256,256,3), np.uint8)\n",
"\n",
"#绘制直线\n",
"cv2.line(img, (0,0), (255,255), (55,255,155), 5)\n",
"\n",
"#显示图像\n",
"cv2.imshow(\"line\", img)\n",
"\n",
"#等待显示\n",
"cv2.waitKey(0)\n",
"cv2.destroyAllWindows()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 实践"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(4056, 3040, 3) <class 'numpy.ndarray'>\n"
]
},
{
"data": {
"text/plain": [
"True"
]
},
"execution_count": 45,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"\n",
"import cv2\n",
"import numpy as np\n",
"import random\n",
"\n",
"img_path = \"/home/hcq/data/01project/wire_dataset/20230112camera_lidar_南京现场采集/20230112/766B0D0B001E46A7A29D3B36B8B76291.jpg\"\n",
"\n",
"line_path = \"/home/hcq/python/OpenCV/dataset/2023-02-07-22_46_36.txt\"\n",
"\n",
"img = cv2.imread(img_path, flags=1) # flags=1 读取彩色图像(BGR) 默认numpy\n",
"print(img.shape, type(img)) # (4056, 3040, 3)\n",
"\n",
"\n",
"\n",
"def draw_rectangle(img, center_x, center_y, width, height):\n",
" # 从左上角坐标为(20,20),右下角坐标为(150,250),绘制的矩形颜色为蓝色(255,0,0),粗细为2。\n",
" cv2.rectangle(img, (int(center_x+width/2),int(center_y+height/2)), (int(center_x+width),int(center_y+height)), (255,0,0), 2)\n",
"\n",
"\n",
"\n",
"def draw_line(img, x1, y1, x2, y2):\n",
" cv2.line(img, (x1,y1), (x2,y2), (55,255,155), 5)\n",
"\n",
"\n",
"with open(line_path, \"r\") as f:\n",
" for line in f.readlines():\n",
" line = line.split(' ')\n",
" # 中心点\n",
" center_x = line[-3]\n",
" center_y = line[-2]\n",
" center_x = int(float(center_x))+random.randint(10,999)\n",
" center_y = int(float(center_y)+random.randint(10,999)+1000)\n",
"\n",
" width = 1000\n",
" height = 1000\n",
" cv2.putText(img, '{:.2f}'.format(100*random.random()) , (int(center_x+width/2),int(center_y+height/2)), cv2.FONT_HERSHEY_TRIPLEX, 2, (150, 0, 180), 2)\n",
" draw_rectangle(img, center_x, center_y, width, height)\n",
" target_x_list = [int(img.shape[1]/2), 1000, 300]\n",
" target_x = target_x_list[random.randint(0,2)]\n",
" target_y = random.randint(10,999)\n",
"\n",
" draw_line(img,int(center_x+width/2),int(center_y+height/2), target_x,target_y )\n",
"\n",
" # print(line)\n",
"\n",
"#显示图像\n",
"# cv2.imshow(\"line\", img)\n",
"\n",
"\n",
"#绘制矩形\n",
"# 从左上角坐标为(20,20),右下角坐标为(150,250),绘制的矩形颜色为蓝色(255,0,0),粗细为2。\n",
"# cv2.rectangle(img, (20,20), (150,250), (255,0,0), 2)\n",
"# #绘制直线\n",
"# cv2.line(img, (0,0), (255,255), (55,255,155), 5)\n",
"\n",
"\n",
"# 保存\n",
"cv2.imwrite('./result.jpg', img) # 保存图像文件\n",
"\n",
"#等待显示\n",
"# cv2.waitKey(0)\n",
"# cv2.destroyAllWindows()"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"44\n"
]
}
],
"source": [
"a = '44.244'\n",
"print(int(float(a)))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3.8.13 ('pcdet')",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.8.13"
},
"orig_nbformat": 4,
"vscode": {
"interpreter": {
"hash": "34e39c63690641fda45a9b5b3a54295d3c7c7609e6d639cc54d178959f811fe3"
}
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: practice/vis/03show_text.ipynb
================================================
{
"cells": [
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3.8.13 ('pcdet')",
"language": "python",
"name": "python3"
},
"language_info": {
"name": "python",
"version": "3.8.13"
},
"orig_nbformat": 4,
"vscode": {
"interpreter": {
"hash": "34e39c63690641fda45a9b5b3a54295d3c7c7609e6d639cc54d178959f811fe3"
}
}
},
"nbformat": 4,
"nbformat_minor": 2
}
================================================
FILE: 基于python的Opencv项目实战/图像处理/图像处理-2(直方图&模板匹配).ipynb
================================================
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"import cv2 #opencv读取的格式是BGR\n",
"import numpy as np\n",
"import matplotlib.pyplot as plt#Matplotlib是RGB\n",
"%matplotlib inline "
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def cv_show(img,name):\n",
" cv2.imshow(name,img)\n",
" cv2.waitKey()\n",
" cv2.destroyAllWindows()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"### 直方图"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
""
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### cv2.calcHist(images,channels,mask,histSize,ranges)\n",
"\n",
"- images: 原图像图像格式为 uint8 或 float32。**当传入函数时应 用中括号 [] 括来例如[img]**\n",
"- channels: 同样用中括号括来它会告函数我们统幅图 像的直方图。如果入图像是灰度图它的值就是 [0]如果是彩色图像 的传入的参数可以是 [0][1][2] 它们分别对应着 BGR。 \n",
"- mask: 掩模图像(统计一部分)。统整幅图像的直方图就把它为 None。但是如 果你想统图像某一分的直方图的你就制作一个掩模图像并 使用它。\n",
"- histSize:BIN 的数目。也应用中括号括来\n",
"- ranges: 像素值范围常为 [0 - 256] "
]
},
{
"cell_type": "code",
"execution_count": 67,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(256, 1)"
]
},
"execution_count": 67,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"img = cv2.imread('cat.jpg',0) #0表示灰度图\n",
"hist = cv2.calcHist([img],[0],None,[256],[0,256]) # 当传入函数时应 用中括号 [] 括来例如img\n",
"hist.shape"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"output_type": "display_data",
"data": {
"text/plain": "<Figure size 432x288 with 1 Axes>",
"image/svg+xml": "<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"no\"?>\n<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n<!-- Created with matplotlib (https://matplotlib.org/) -->\n<svg height=\"248.518125pt\" version=\"1.1\" viewBox=\"0 0 377.552989 248.518125\" width=\"377.552989pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n <metadata>\n <rdf:RDF xmlns:cc=\"http://creativecommons.org/ns#\" xmlns:dc=\"http://purl.org/dc/elements/1.1/\" xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\">\n <cc:Work>\n <dc:type rdf:resource=\"http://purl.org/dc/dcmitype/StillImage\"/>\n <dc:date>2021-01-24T18:45:47.275809</dc:date>\n <dc:format>image/svg+xml</dc:format>\n <dc:creator>\n <cc:Agent>\n <dc:title>Matplotlib v3.3.3, https://matplotlib.org/</dc:title>\n </cc:Agent>\n </dc:creator>\n </cc:Work>\n </rdf:RDF>\n </metadata>\n <defs>\n <style type=\"text/css\">*{stroke-linecap:butt;stroke-linejoin:round;}</style>\n </defs>\n <g id=\"figure_1\">\n <g id=\"patch_1\">\n <path d=\"M 0 248.518125 \nL 377.552989 248.518125 \nL 377.552989 0 \nL 0 0 \nz\n\" style=\"fill:none;\"/>\n </g>\n <g id=\"axes_1\">\n <g id=\"patch_2\">\n <path d=\"M 33.2875 224.64 \nL 368.0875 224.64 \nL 368.0875 7.2 \nL 33.2875 7.2 \nz\n\" style=\"fill:#ffffff;\"/>\n </g>\n <g id=\"patch_3\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 48.505682 224.64 \nL 49.694602 224.64 \nL 49.694602 224.363147 \nL 48.505682 224.363147 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_4\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 49.694602 224.64 \nL 50.883523 224.64 \nL 50.883523 224.363147 \nL 49.694602 224.363147 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_5\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 50.883523 224.64 \nL 52.072443 224.64 \nL 52.072443 224.64 \nL 50.883523 224.64 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_6\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 52.072443 224.64 \nL 53.261364 224.64 \nL 53.261364 223.809442 \nL 52.072443 223.809442 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_7\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 53.261364 224.64 \nL 54.450284 224.64 \nL 54.450284 223.53259 \nL 53.261364 223.53259 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_8\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 54.450284 224.64 \nL 55.639205 224.64 \nL 55.639205 222.978885 \nL 54.450284 222.978885 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_9\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 55.639205 224.64 \nL 56.828125 224.64 \nL 56.828125 222.702032 \nL 55.639205 222.702032 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_10\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 56.828125 224.64 \nL 58.017045 224.64 \nL 58.017045 221.040917 \nL 56.828125 221.040917 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_11\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 58.017045 224.64 \nL 59.205966 224.64 \nL 59.205966 218.272391 \nL 58.017045 218.272391 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_12\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 59.205966 224.64 \nL 60.394886 224.64 \nL 60.394886 224.64 \nL 59.205966 224.64 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_13\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 60.394886 224.64 \nL 61.583807 224.64 \nL 61.583807 218.826096 \nL 60.394886 218.826096 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_14\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 61.583807 224.64 \nL 62.772727 224.64 \nL 62.772727 216.888128 \nL 61.583807 216.888128 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_15\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 62.772727 224.64 \nL 63.961648 224.64 \nL 63.961648 215.780718 \nL 62.772727 215.780718 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_16\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 63.961648 224.64 \nL 65.150568 224.64 \nL 65.150568 214.119603 \nL 63.961648 214.119603 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_17\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 65.150568 224.64 \nL 66.339489 224.64 \nL 66.339489 210.520519 \nL 65.150568 210.520519 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_18\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 66.339489 224.64 \nL 67.528409 224.64 \nL 67.528409 213.84275 \nL 66.339489 213.84275 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_19\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 67.528409 224.64 \nL 68.71733 224.64 \nL 68.71733 207.475141 \nL 67.528409 207.475141 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_20\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 68.71733 224.64 \nL 69.90625 224.64 \nL 69.90625 203.0455 \nL 68.71733 203.0455 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_21\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 69.90625 224.64 \nL 71.09517 224.64 \nL 71.09517 198.062154 \nL 69.90625 198.062154 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_22\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 71.09517 224.64 \nL 72.284091 224.64 \nL 72.284091 224.64 \nL 71.09517 224.64 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_23\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 72.284091 224.64 \nL 73.473011 224.64 \nL 73.473011 195.293629 \nL 72.284091 195.293629 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_24\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 73.473011 224.64 \nL 74.661932 224.64 \nL 74.661932 197.231597 \nL 73.473011 197.231597 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_25\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 74.661932 224.64 \nL 75.850852 224.64 \nL 75.850852 189.202872 \nL 74.661932 189.202872 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_26\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 75.850852 224.64 \nL 77.039773 224.64 \nL 77.039773 180.066738 \nL 75.850852 180.066738 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_27\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 77.039773 224.64 \nL 78.228693 224.64 \nL 78.228693 175.637097 \nL 77.039773 175.637097 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_28\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 78.228693 224.64 \nL 79.417614 224.64 \nL 79.417614 171.761161 \nL 78.228693 171.761161 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_29\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 79.417614 224.64 \nL 80.606534 224.64 \nL 80.606534 157.364828 \nL 79.417614 157.364828 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_30\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 80.606534 224.64 \nL 81.795455 224.64 \nL 81.795455 144.62961 \nL 80.606534 144.62961 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_31\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 81.795455 224.64 \nL 82.984375 224.64 \nL 82.984375 136.047181 \nL 81.795455 136.047181 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_32\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 82.984375 224.64 \nL 84.173295 224.64 \nL 84.173295 224.64 \nL 82.984375 224.64 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_33\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 84.173295 224.64 \nL 85.362216 224.64 \nL 85.362216 126.634194 \nL 84.173295 126.634194 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_34\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 85.362216 224.64 \nL 86.551136 224.64 \nL 86.551136 111.130451 \nL 85.362216 111.130451 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_35\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 86.551136 224.64 \nL 87.740057 224.64 \nL 87.740057 109.192483 \nL 86.551136 109.192483 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_36\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 87.740057 224.64 \nL 88.928977 224.64 \nL 88.928977 101.717464 \nL 87.740057 101.717464 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_37\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 88.928977 224.64 \nL 90.117898 224.64 \nL 90.117898 101.440611 \nL 88.928977 101.440611 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_38\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 90.117898 224.64 \nL 91.306818 224.64 \nL 91.306818 90.366509 \nL 90.117898 90.366509 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_39\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 91.306818 224.64 \nL 92.495739 224.64 \nL 92.495739 77.077586 \nL 91.306818 77.077586 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_40\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 92.495739 224.64 \nL 93.684659 224.64 \nL 93.684659 90.643361 \nL 92.495739 90.643361 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_41\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 93.684659 224.64 \nL 94.87358 224.64 \nL 94.87358 84.275752 \nL 93.684659 84.275752 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_42\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 94.87358 224.64 \nL 96.0625 224.64 \nL 96.0625 224.64 \nL 94.87358 224.64 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_43\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 96.0625 224.64 \nL 97.25142 224.64 \nL 97.25142 100.886906 \nL 96.0625 100.886906 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_44\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 97.25142 224.64 \nL 98.440341 224.64 \nL 98.440341 86.767426 \nL 97.25142 86.767426 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_45\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 98.440341 224.64 \nL 99.629261 224.64 \nL 99.629261 89.812804 \nL 98.440341 89.812804 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_46\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 99.629261 224.64 \nL 100.818182 224.64 \nL 100.818182 95.626707 \nL 99.629261 95.626707 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_47\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 100.818182 224.64 \nL 102.007102 224.64 \nL 102.007102 94.519297 \nL 100.818182 94.519297 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_48\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 102.007102 224.64 \nL 103.196023 224.64 \nL 103.196023 107.254515 \nL 102.007102 107.254515 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_49\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 103.196023 224.64 \nL 104.384943 224.64 \nL 104.384943 122.481406 \nL 103.196023 122.481406 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_50\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 104.384943 224.64 \nL 105.573864 224.64 \nL 105.573864 125.249931 \nL 104.384943 125.249931 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_51\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 105.573864 224.64 \nL 106.762784 224.64 \nL 106.762784 134.939771 \nL 105.573864 134.939771 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_52\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 106.762784 224.64 \nL 107.951705 224.64 \nL 107.951705 224.64 \nL 106.762784 224.64 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_53\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 107.951705 224.64 \nL 109.140625 224.64 \nL 109.140625 145.460168 \nL 107.951705 145.460168 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_54\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 109.140625 224.64 \nL 110.329545 224.64 \nL 110.329545 148.782399 \nL 109.140625 148.782399 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_55\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 110.329545 224.64 \nL 111.518466 224.64 \nL 111.518466 148.505546 \nL 110.329545 148.505546 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_56\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 111.518466 224.64 \nL 112.707386 224.64 \nL 112.707386 158.749091 \nL 111.518466 158.749091 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_57\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 112.707386 224.64 \nL 113.896307 224.64 \nL 113.896307 160.687059 \nL 112.707386 160.687059 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_58\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 113.896307 224.64 \nL 115.085227 224.64 \nL 115.085227 163.455584 \nL 113.896307 163.455584 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_59\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 115.085227 224.64 \nL 116.274148 224.64 \nL 116.274148 163.178732 \nL 115.085227 163.178732 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_60\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 116.274148 224.64 \nL 117.463068 224.64 \nL 117.463068 161.240764 \nL 116.274148 161.240764 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_61\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 117.463068 224.64 \nL 118.651989 224.64 \nL 118.651989 165.947257 \nL 117.463068 165.947257 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_62\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 118.651989 224.64 \nL 119.840909 224.64 \nL 119.840909 224.64 \nL 118.651989 224.64 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_63\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 119.840909 224.64 \nL 121.02983 224.64 \nL 121.02983 165.393552 \nL 119.840909 165.393552 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_64\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 121.02983 224.64 \nL 122.21875 224.64 \nL 122.21875 165.393552 \nL 121.02983 165.393552 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_65\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 122.21875 224.64 \nL 123.40767 224.64 \nL 123.40767 166.22411 \nL 122.21875 166.22411 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_66\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 123.40767 224.64 \nL 124.596591 224.64 \nL 124.596591 160.963911 \nL 123.40767 160.963911 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_67\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 124.596591 224.64 \nL 125.785511 224.64 \nL 125.785511 161.240764 \nL 124.596591 161.240764 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_68\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 125.785511 224.64 \nL 126.974432 224.64 \nL 126.974432 153.21204 \nL 125.785511 153.21204 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_69\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 126.974432 224.64 \nL 128.163352 224.64 \nL 128.163352 157.641681 \nL 126.974432 157.641681 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_70\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 128.163352 224.64 \nL 129.352273 224.64 \nL 129.352273 160.133354 \nL 128.163352 160.133354 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_71\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 129.352273 224.64 \nL 130.541193 224.64 \nL 130.541193 224.64 \nL 129.352273 224.64 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_72\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 130.541193 224.64 \nL 131.730114 224.64 \nL 131.730114 152.935187 \nL 130.541193 152.935187 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_73\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 131.730114 224.64 \nL 132.919034 224.64 \nL 132.919034 159.579649 \nL 131.730114 159.579649 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_74\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 132.919034 224.64 \nL 134.107955 224.64 \nL 134.107955 157.918533 \nL 132.919034 157.918533 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_75\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 134.107955 224.64 \nL 135.296875 224.64 \nL 135.296875 164.562995 \nL 134.107955 164.562995 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_76\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 135.296875 224.64 \nL 136.485795 224.64 \nL 136.485795 165.947257 \nL 135.296875 165.947257 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_77\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 136.485795 224.64 \nL 137.674716 224.64 \nL 137.674716 152.935187 \nL 136.485795 152.935187 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_78\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 137.674716 224.64 \nL 138.863636 224.64 \nL 138.863636 157.641681 \nL 137.674716 157.641681 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_79\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 138.863636 224.64 \nL 140.052557 224.64 \nL 140.052557 154.042597 \nL 138.863636 154.042597 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_80\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 140.052557 224.64 \nL 141.241477 224.64 \nL 141.241477 155.980565 \nL 140.052557 155.980565 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_81\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 141.241477 224.64 \nL 142.430398 224.64 \nL 142.430398 224.64 \nL 141.241477 224.64 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_82\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 142.430398 224.64 \nL 143.619318 224.64 \nL 143.619318 154.042597 \nL 142.430398 154.042597 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_83\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 143.619318 224.64 \nL 144.808239 224.64 \nL 144.808239 163.455584 \nL 143.619318 163.455584 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_84\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 144.808239 224.64 \nL 145.997159 224.64 \nL 145.997159 141.030527 \nL 144.808239 141.030527 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_85\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 145.997159 224.64 \nL 147.18608 224.64 \nL 147.18608 146.013873 \nL 145.997159 146.013873 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_86\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 147.18608 224.64 \nL 148.375 224.64 \nL 148.375 142.968495 \nL 147.18608 142.968495 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_87\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 148.375 224.64 \nL 149.56392 224.64 \nL 149.56392 144.352758 \nL 148.375 144.352758 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_88\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 149.56392 224.64 \nL 150.752841 224.64 \nL 150.752841 140.476822 \nL 149.56392 140.476822 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_89\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 150.752841 224.64 \nL 151.941761 224.64 \nL 151.941761 135.770328 \nL 150.752841 135.770328 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_90\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 151.941761 224.64 \nL 153.130682 224.64 \nL 153.130682 123.311963 \nL 151.941761 123.311963 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_91\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 153.130682 224.64 \nL 154.319602 224.64 \nL 154.319602 224.64 \nL 153.130682 224.64 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_92\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 154.319602 224.64 \nL 155.508523 224.64 \nL 155.508523 112.237861 \nL 154.319602 112.237861 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_93\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 155.508523 224.64 \nL 156.697443 224.64 \nL 156.697443 111.130451 \nL 155.508523 111.130451 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_94\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 156.697443 224.64 \nL 157.886364 224.64 \nL 157.886364 93.965592 \nL 156.697443 93.965592 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_95\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 157.886364 224.64 \nL 159.075284 224.64 \nL 159.075284 91.197066 \nL 157.886364 91.197066 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_96\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 159.075284 224.64 \nL 160.264205 224.64 \nL 160.264205 76.247028 \nL 159.075284 76.247028 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_97\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 160.264205 224.64 \nL 161.453125 224.64 \nL 161.453125 74.032208 \nL 160.264205 74.032208 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_98\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 161.453125 224.64 \nL 162.642045 224.64 \nL 162.642045 72.09424 \nL 161.453125 72.09424 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_99\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 162.642045 224.64 \nL 163.830966 224.64 \nL 163.830966 74.032208 \nL 162.642045 74.032208 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_100\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 163.830966 224.64 \nL 165.019886 224.64 \nL 165.019886 88.428541 \nL 163.830966 88.428541 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_101\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 165.019886 224.64 \nL 166.208807 224.64 \nL 166.208807 224.64 \nL 165.019886 224.64 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_102\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 166.208807 224.64 \nL 167.397727 224.64 \nL 167.397727 88.151688 \nL 166.208807 88.151688 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_103\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 167.397727 224.64 \nL 168.586648 224.64 \nL 168.586648 101.994316 \nL 167.397727 101.994316 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_104\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 168.586648 224.64 \nL 169.775568 224.64 \nL 169.775568 110.299893 \nL 168.586648 110.299893 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_105\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 169.775568 224.64 \nL 170.964489 224.64 \nL 170.964489 119.989733 \nL 169.775568 119.989733 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_106\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 170.964489 224.64 \nL 172.153409 224.64 \nL 172.153409 116.390649 \nL 170.964489 116.390649 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_107\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 172.153409 224.64 \nL 173.34233 224.64 \nL 173.34233 124.696226 \nL 172.153409 124.696226 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_108\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 173.34233 224.64 \nL 174.53125 224.64 \nL 174.53125 129.40272 \nL 173.34233 129.40272 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_109\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 174.53125 224.64 \nL 175.72017 224.64 \nL 175.72017 129.956425 \nL 174.53125 129.956425 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_110\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 175.72017 224.64 \nL 176.909091 224.64 \nL 176.909091 128.572162 \nL 175.72017 128.572162 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_111\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 176.909091 224.64 \nL 178.098011 224.64 \nL 178.098011 224.64 \nL 176.909091 224.64 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_112\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 178.098011 224.64 \nL 179.286932 224.64 \nL 179.286932 126.080489 \nL 178.098011 126.080489 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_113\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 179.286932 224.64 \nL 180.475852 224.64 \nL 180.475852 131.61754 \nL 179.286932 131.61754 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_114\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 180.475852 224.64 \nL 181.664773 224.64 \nL 181.664773 123.865668 \nL 180.475852 123.865668 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_115\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 181.664773 224.64 \nL 182.853693 224.64 \nL 182.853693 126.634194 \nL 181.664773 126.634194 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_116\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 182.853693 224.64 \nL 184.042614 224.64 \nL 184.042614 124.419374 \nL 182.853693 124.419374 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_117\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 184.042614 224.64 \nL 185.231534 224.64 \nL 185.231534 120.543438 \nL 184.042614 120.543438 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_118\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 185.231534 224.64 \nL 186.420455 224.64 \nL 186.420455 117.49806 \nL 185.231534 117.49806 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_119\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 186.420455 224.64 \nL 187.609375 224.64 \nL 187.609375 109.469335 \nL 186.420455 109.469335 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_120\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 187.609375 224.64 \nL 188.798295 224.64 \nL 188.798295 109.469335 \nL 187.609375 109.469335 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_121\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 188.798295 224.64 \nL 189.987216 224.64 \nL 189.987216 224.64 \nL 188.798295 224.64 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_122\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 189.987216 224.64 \nL 191.176136 224.64 \nL 191.176136 93.135034 \nL 189.987216 93.135034 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_123\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 191.176136 224.64 \nL 192.365057 224.64 \nL 192.365057 77.354439 \nL 191.176136 77.354439 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_124\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 192.365057 224.64 \nL 193.553977 224.64 \nL 193.553977 70.433125 \nL 192.365057 70.433125 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_125\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 193.553977 224.64 \nL 194.742898 224.64 \nL 194.742898 77.354439 \nL 193.553977 77.354439 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_126\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 194.742898 224.64 \nL 195.931818 224.64 \nL 195.931818 62.681253 \nL 194.742898 62.681253 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_127\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 195.931818 224.64 \nL 197.120739 224.64 \nL 197.120739 56.867349 \nL 195.931818 56.867349 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_128\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 197.120739 224.64 \nL 198.309659 224.64 \nL 198.309659 50.222888 \nL 197.120739 50.222888 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_129\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 198.309659 224.64 \nL 199.49858 224.64 \nL 199.49858 46.070099 \nL 198.309659 46.070099 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_130\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 199.49858 224.64 \nL 200.6875 224.64 \nL 200.6875 224.64 \nL 199.49858 224.64 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_131\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 200.6875 224.64 \nL 201.87642 224.64 \nL 201.87642 54.652529 \nL 200.6875 54.652529 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_132\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 201.87642 224.64 \nL 203.065341 224.64 \nL 203.065341 45.793247 \nL 201.87642 45.793247 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_133\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 203.065341 224.64 \nL 204.254261 224.64 \nL 204.254261 63.511811 \nL 203.065341 63.511811 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_134\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 204.254261 224.64 \nL 205.443182 224.64 \nL 205.443182 76.800733 \nL 204.254261 76.800733 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_135\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 205.443182 224.64 \nL 206.632102 224.64 \nL 206.632102 82.337785 \nL 205.443182 82.337785 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_136\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 206.632102 224.64 \nL 207.821023 224.64 \nL 207.821023 84.552605 \nL 206.632102 84.552605 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_137\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 207.821023 224.64 \nL 209.009943 224.64 \nL 209.009943 84.552605 \nL 207.821023 84.552605 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_138\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 209.009943 224.64 \nL 210.198864 224.64 \nL 210.198864 82.337785 \nL 209.009943 82.337785 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_139\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 210.198864 224.64 \nL 211.387784 224.64 \nL 211.387784 98.11838 \nL 210.198864 98.11838 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_140\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 211.387784 224.64 \nL 212.576705 224.64 \nL 212.576705 224.64 \nL 211.387784 224.64 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_141\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 212.576705 224.64 \nL 213.765625 224.64 \nL 213.765625 62.127548 \nL 212.576705 62.127548 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_142\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 213.765625 224.64 \nL 214.954545 224.64 \nL 214.954545 50.776593 \nL 213.765625 50.776593 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_143\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 214.954545 224.64 \nL 216.143466 224.64 \nL 216.143466 61.850695 \nL 214.954545 61.850695 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_144\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 216.143466 224.64 \nL 217.332386 224.64 \nL 217.332386 50.776593 \nL 216.143466 50.776593 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_145\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 217.332386 224.64 \nL 218.521307 224.64 \nL 218.521307 37.48767 \nL 217.332386 37.48767 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_146\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 218.521307 224.64 \nL 219.710227 224.64 \nL 219.710227 42.471016 \nL 218.521307 42.471016 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_147\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 219.710227 224.64 \nL 220.899148 224.64 \nL 220.899148 46.623804 \nL 219.710227 46.623804 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_148\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 220.899148 224.64 \nL 222.088068 224.64 \nL 222.088068 55.759939 \nL 220.899148 55.759939 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_149\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 222.088068 224.64 \nL 223.276989 224.64 \nL 223.276989 59.359022 \nL 222.088068 59.359022 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_150\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 223.276989 224.64 \nL 224.465909 224.64 \nL 224.465909 224.64 \nL 223.276989 224.64 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_151\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 224.465909 224.64 \nL 225.65483 224.64 \nL 225.65483 69.879419 \nL 224.465909 69.879419 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_152\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 225.65483 224.64 \nL 226.84375 224.64 \nL 226.84375 66.834041 \nL 225.65483 66.834041 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_153\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 226.84375 224.64 \nL 228.03267 224.64 \nL 228.03267 68.495157 \nL 226.84375 68.495157 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_154\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 228.03267 224.64 \nL 229.221591 224.64 \nL 229.221591 38.871933 \nL 228.03267 38.871933 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_155\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 229.221591 224.64 \nL 230.410511 224.64 \nL 230.410511 44.132131 \nL 229.221591 44.132131 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_156\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 230.410511 224.64 \nL 231.599432 224.64 \nL 231.599432 38.871933 \nL 230.410511 38.871933 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_157\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 231.599432 224.64 \nL 232.788352 224.64 \nL 232.788352 31.950619 \nL 231.599432 31.950619 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_158\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 232.788352 224.64 \nL 233.977273 224.64 \nL 233.977273 17.554286 \nL 232.788352 17.554286 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_159\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 233.977273 224.64 \nL 235.166193 224.64 \nL 235.166193 26.136715 \nL 233.977273 26.136715 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_160\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 235.166193 224.64 \nL 236.355114 224.64 \nL 236.355114 224.64 \nL 235.166193 224.64 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_161\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 236.355114 224.64 \nL 237.544034 224.64 \nL 237.544034 24.198747 \nL 236.355114 24.198747 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_162\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 237.544034 224.64 \nL 238.732955 224.64 \nL 238.732955 38.041375 \nL 237.544034 38.041375 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_163\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 238.732955 224.64 \nL 239.921875 224.64 \nL 239.921875 71.817387 \nL 238.732955 71.817387 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_164\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 239.921875 224.64 \nL 241.110795 224.64 \nL 241.110795 85.936868 \nL 239.921875 85.936868 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_165\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 241.110795 224.64 \nL 242.299716 224.64 \nL 242.299716 85.936868 \nL 241.110795 85.936868 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_166\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 242.299716 224.64 \nL 243.488636 224.64 \nL 243.488636 85.383163 \nL 242.299716 85.383163 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_167\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 243.488636 224.64 \nL 244.677557 224.64 \nL 244.677557 113.068419 \nL 243.488636 113.068419 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_168\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 244.677557 224.64 \nL 245.866477 224.64 \nL 245.866477 106.147105 \nL 244.677557 106.147105 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_169\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 245.866477 224.64 \nL 247.055398 224.64 \nL 247.055398 129.125867 \nL 245.866477 129.125867 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_170\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 247.055398 224.64 \nL 248.244318 224.64 \nL 248.244318 224.64 \nL 247.055398 224.64 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_171\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 248.244318 224.64 \nL 249.433239 224.64 \nL 249.433239 121.650848 \nL 248.244318 121.650848 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_172\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 249.433239 224.64 \nL 250.622159 224.64 \nL 250.622159 131.340688 \nL 249.433239 131.340688 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_173\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 250.622159 224.64 \nL 251.81108 224.64 \nL 251.81108 131.894393 \nL 250.622159 131.894393 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_174\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 251.81108 224.64 \nL 253 224.64 \nL 253 143.799053 \nL 251.81108 143.799053 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_175\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 253 224.64 \nL 254.18892 224.64 \nL 254.18892 131.894393 \nL 253 131.894393 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_176\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 254.18892 224.64 \nL 255.377841 224.64 \nL 255.377841 139.092559 \nL 254.18892 139.092559 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_177\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 255.377841 224.64 \nL 256.566761 224.64 \nL 256.566761 131.340688 \nL 255.377841 131.340688 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_178\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 256.566761 224.64 \nL 257.755682 224.64 \nL 257.755682 135.770328 \nL 256.566761 135.770328 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_179\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 257.755682 224.64 \nL 258.944602 224.64 \nL 258.944602 131.063835 \nL 257.755682 131.063835 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_180\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 258.944602 224.64 \nL 260.133523 224.64 \nL 260.133523 224.64 \nL 258.944602 224.64 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_181\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 260.133523 224.64 \nL 261.322443 224.64 \nL 261.322443 131.340688 \nL 260.133523 131.340688 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_182\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 261.322443 224.64 \nL 262.511364 224.64 \nL 262.511364 133.001803 \nL 261.322443 133.001803 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_183\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 262.511364 224.64 \nL 263.700284 224.64 \nL 263.700284 138.815707 \nL 262.511364 138.815707 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_184\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 263.700284 224.64 \nL 264.889205 224.64 \nL 264.889205 144.906463 \nL 263.700284 144.906463 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_185\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 264.889205 224.64 \nL 266.078125 224.64 \nL 266.078125 145.737021 \nL 264.889205 145.737021 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_186\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 266.078125 224.64 \nL 267.267045 224.64 \nL 267.267045 166.500963 \nL 266.078125 166.500963 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_187\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 267.267045 224.64 \nL 268.455966 224.64 \nL 268.455966 162.071322 \nL 267.267045 162.071322 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_188\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 268.455966 224.64 \nL 269.644886 224.64 \nL 269.644886 158.749091 \nL 268.455966 158.749091 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_189\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 269.644886 224.64 \nL 270.833807 224.64 \nL 270.833807 170.376898 \nL 269.644886 170.376898 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_190\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 270.833807 224.64 \nL 272.022727 224.64 \nL 272.022727 224.64 \nL 270.833807 224.64 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_191\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 272.022727 224.64 \nL 273.211648 224.64 \nL 273.211648 173.145424 \nL 272.022727 173.145424 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_192\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 273.211648 224.64 \nL 274.400568 224.64 \nL 274.400568 178.12877 \nL 273.211648 178.12877 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_193\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 274.400568 224.64 \nL 275.589489 224.64 \nL 275.589489 180.620443 \nL 274.400568 180.620443 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_194\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 275.589489 224.64 \nL 276.778409 224.64 \nL 276.778409 176.744507 \nL 275.589489 176.744507 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_195\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 276.778409 224.64 \nL 277.96733 224.64 \nL 277.96733 180.343591 \nL 276.778409 180.343591 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_196\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 277.96733 224.64 \nL 279.15625 224.64 \nL 279.15625 176.744507 \nL 277.96733 176.744507 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_197\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 279.15625 224.64 \nL 280.34517 224.64 \nL 280.34517 171.207456 \nL 279.15625 171.207456 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_198\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 280.34517 224.64 \nL 281.534091 224.64 \nL 281.534091 168.162078 \nL 280.34517 168.162078 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_199\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 281.534091 224.64 \nL 282.723011 224.64 \nL 282.723011 224.64 \nL 281.534091 224.64 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_200\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 282.723011 224.64 \nL 283.911932 224.64 \nL 283.911932 166.777815 \nL 282.723011 166.777815 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_201\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 283.911932 224.64 \nL 285.100852 224.64 \nL 285.100852 163.732437 \nL 283.911932 163.732437 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_202\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 285.100852 224.64 \nL 286.289773 224.64 \nL 286.289773 157.364828 \nL 285.100852 157.364828 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_203\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 286.289773 224.64 \nL 287.478693 224.64 \nL 287.478693 156.53427 \nL 286.289773 156.53427 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_204\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 287.478693 224.64 \nL 288.667614 224.64 \nL 288.667614 164.00929 \nL 287.478693 164.00929 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_205\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 288.667614 224.64 \nL 289.856534 224.64 \nL 289.856534 153.21204 \nL 288.667614 153.21204 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_206\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 289.856534 224.64 \nL 291.045455 224.64 \nL 291.045455 160.410206 \nL 289.856534 160.410206 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_207\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 291.045455 224.64 \nL 292.234375 224.64 \nL 292.234375 173.145424 \nL 291.045455 173.145424 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_208\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 292.234375 224.64 \nL 293.423295 224.64 \nL 293.423295 159.025943 \nL 292.234375 159.025943 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_209\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 293.423295 224.64 \nL 294.612216 224.64 \nL 294.612216 224.64 \nL 293.423295 224.64 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_210\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 294.612216 224.64 \nL 295.801136 224.64 \nL 295.801136 156.811123 \nL 294.612216 156.811123 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_211\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 295.801136 224.64 \nL 296.990057 224.64 \nL 296.990057 161.794469 \nL 295.801136 161.794469 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_212\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 296.990057 224.64 \nL 298.178977 224.64 \nL 298.178977 161.794469 \nL 296.990057 161.794469 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_213\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 298.178977 224.64 \nL 299.367898 224.64 \nL 299.367898 164.286142 \nL 298.178977 164.286142 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_214\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 299.367898 224.64 \nL 300.556818 224.64 \nL 300.556818 159.856501 \nL 299.367898 159.856501 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_215\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 300.556818 224.64 \nL 301.745739 224.64 \nL 301.745739 154.873155 \nL 300.556818 154.873155 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_216\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 301.745739 224.64 \nL 302.934659 224.64 \nL 302.934659 149.612956 \nL 301.745739 149.612956 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_217\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 302.934659 224.64 \nL 304.12358 224.64 \nL 304.12358 149.336104 \nL 302.934659 149.336104 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_218\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 304.12358 224.64 \nL 305.3125 224.64 \nL 305.3125 146.567578 \nL 304.12358 146.567578 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_219\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 305.3125 224.64 \nL 306.50142 224.64 \nL 306.50142 224.64 \nL 305.3125 224.64 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_220\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 306.50142 224.64 \nL 307.690341 224.64 \nL 307.690341 153.488892 \nL 306.50142 153.488892 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_221\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 307.690341 224.64 \nL 308.879261 224.64 \nL 308.879261 147.674989 \nL 307.690341 147.674989 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_222\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 308.879261 224.64 \nL 310.068182 224.64 \nL 310.068182 162.348174 \nL 308.879261 162.348174 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_223\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 310.068182 224.64 \nL 311.257102 224.64 \nL 311.257102 156.257418 \nL 310.068182 156.257418 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_224\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 311.257102 224.64 \nL 312.446023 224.64 \nL 312.446023 171.207456 \nL 311.257102 171.207456 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_225\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 312.446023 224.64 \nL 313.634943 224.64 \nL 313.634943 186.711199 \nL 312.446023 186.711199 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_226\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 313.634943 224.64 \nL 314.823864 224.64 \nL 314.823864 188.095462 \nL 313.634943 188.095462 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_227\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 314.823864 224.64 \nL 316.012784 224.64 \nL 316.012784 195.293629 \nL 314.823864 195.293629 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_228\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 316.012784 224.64 \nL 317.201705 224.64 \nL 317.201705 196.401039 \nL 316.012784 196.401039 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_229\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 317.201705 224.64 \nL 318.390625 224.64 \nL 318.390625 224.64 \nL 317.201705 224.64 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_230\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 318.390625 224.64 \nL 319.579545 224.64 \nL 319.579545 200.000122 \nL 318.390625 200.000122 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_231\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 319.579545 224.64 \nL 320.768466 224.64 \nL 320.768466 205.537173 \nL 319.579545 205.537173 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_232\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 320.768466 224.64 \nL 321.957386 224.64 \nL 321.957386 204.983468 \nL 320.768466 204.983468 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_233\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 321.957386 224.64 \nL 323.146307 224.64 \nL 323.146307 210.243667 \nL 321.957386 210.243667 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_234\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 323.146307 224.64 \nL 324.335227 224.64 \nL 324.335227 206.921436 \nL 323.146307 206.921436 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_235\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 324.335227 224.64 \nL 325.524148 224.64 \nL 325.524148 213.84275 \nL 324.335227 213.84275 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_236\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 325.524148 224.64 \nL 326.713068 224.64 \nL 326.713068 214.119603 \nL 325.524148 214.119603 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_237\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 326.713068 224.64 \nL 327.901989 224.64 \nL 327.901989 217.718686 \nL 326.713068 217.718686 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_238\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 327.901989 224.64 \nL 329.090909 224.64 \nL 329.090909 217.718686 \nL 327.901989 217.718686 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_239\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 329.090909 224.64 \nL 330.27983 224.64 \nL 330.27983 224.64 \nL 329.090909 224.64 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_240\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 330.27983 224.64 \nL 331.46875 224.64 \nL 331.46875 219.102949 \nL 330.27983 219.102949 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_241\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 331.46875 224.64 \nL 332.65767 224.64 \nL 332.65767 220.764064 \nL 331.46875 220.764064 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_242\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 332.65767 224.64 \nL 333.846591 224.64 \nL 333.846591 221.594622 \nL 332.65767 221.594622 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_243\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 333.846591 224.64 \nL 335.035511 224.64 \nL 335.035511 218.272391 \nL 333.846591 218.272391 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_244\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 335.035511 224.64 \nL 336.224432 224.64 \nL 336.224432 222.42518 \nL 335.035511 222.42518 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_245\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 336.224432 224.64 \nL 337.413352 224.64 \nL 337.413352 222.42518 \nL 336.224432 222.42518 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_246\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 337.413352 224.64 \nL 338.602273 224.64 \nL 338.602273 221.871474 \nL 337.413352 221.871474 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_247\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 338.602273 224.64 \nL 339.791193 224.64 \nL 339.791193 222.42518 \nL 338.602273 222.42518 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_248\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 339.791193 224.64 \nL 340.980114 224.64 \nL 340.980114 222.978885 \nL 339.791193 222.978885 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_249\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 340.980114 224.64 \nL 342.169034 224.64 \nL 342.169034 224.64 \nL 340.980114 224.64 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_250\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 342.169034 224.64 \nL 343.357955 224.64 \nL 343.357955 224.086295 \nL 342.169034 224.086295 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_251\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 343.357955 224.64 \nL 344.546875 224.64 \nL 344.546875 224.086295 \nL 343.357955 224.086295 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_252\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 344.546875 224.64 \nL 345.735795 224.64 \nL 345.735795 224.64 \nL 344.546875 224.64 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_253\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 345.735795 224.64 \nL 346.924716 224.64 \nL 346.924716 224.363147 \nL 345.735795 224.363147 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_254\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 346.924716 224.64 \nL 348.113636 224.64 \nL 348.113636 224.363147 \nL 346.924716 224.363147 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_255\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 348.113636 224.64 \nL 349.302557 224.64 \nL 349.302557 224.64 \nL 348.113636 224.64 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_256\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 349.302557 224.64 \nL 350.491477 224.64 \nL 350.491477 223.809442 \nL 349.302557 223.809442 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_257\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 350.491477 224.64 \nL 351.680398 224.64 \nL 351.680398 224.363147 \nL 350.491477 224.363147 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"patch_258\">\n <path clip-path=\"url(#p8bb13c951c)\" d=\"M 351.680398 224.64 \nL 352.869318 224.64 \nL 352.869318 224.363147 \nL 351.680398 224.363147 \nz\n\" style=\"fill:#1f77b4;\"/>\n </g>\n <g id=\"matplotlib.axis_1\">\n <g id=\"xtick_1\">\n <g id=\"line2d_1\">\n <defs>\n <path d=\"M 0 0 \nL 0 3.5 \n\" id=\"m4fb94937fa\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n </defs>\n <g>\n <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"96.145208\" xlink:href=\"#m4fb94937fa\" y=\"224.64\"/>\n </g>\n </g>\n <g id=\"text_1\">\n <!-- 50 -->\n <g transform=\"translate(89.782708 239.238437)scale(0.1 -0.1)\">\n <defs>\n <path d=\"M 10.796875 72.90625 \nL 49.515625 72.90625 \nL 49.515625 64.59375 \nL 19.828125 64.59375 \nL 19.828125 46.734375 \nQ 21.96875 47.46875 24.109375 47.828125 \nQ 26.265625 48.1875 28.421875 48.1875 \nQ 40.625 48.1875 47.75 41.5 \nQ 54.890625 34.8125 54.890625 23.390625 \nQ 54.890625 11.625 47.5625 5.09375 \nQ 40.234375 -1.421875 26.90625 -1.421875 \nQ 22.3125 -1.421875 17.546875 -0.640625 \nQ 12.796875 0.140625 7.71875 1.703125 \nL 7.71875 11.625 \nQ 12.109375 9.234375 16.796875 8.0625 \nQ 21.484375 6.890625 26.703125 6.890625 \nQ 35.15625 6.890625 40.078125 11.328125 \nQ 45.015625 15.765625 45.015625 23.390625 \nQ 45.015625 31 40.078125 35.4375 \nQ 35.15625 39.890625 26.703125 39.890625 \nQ 22.75 39.890625 18.8125 39.015625 \nQ 14.890625 38.140625 10.796875 36.28125 \nz\n\" id=\"DejaVuSans-53\"/>\n <path d=\"M 31.78125 66.40625 \nQ 24.171875 66.40625 20.328125 58.90625 \nQ 16.5 51.421875 16.5 36.375 \nQ 16.5 21.390625 20.328125 13.890625 \nQ 24.171875 6.390625 31.78125 6.390625 \nQ 39.453125 6.390625 43.28125 13.890625 \nQ 47.125 21.390625 47.125 36.375 \nQ 47.125 51.421875 43.28125 58.90625 \nQ 39.453125 66.40625 31.78125 66.40625 \nz\nM 31.78125 74.21875 \nQ 44.046875 74.21875 50.515625 64.515625 \nQ 56.984375 54.828125 56.984375 36.375 \nQ 56.984375 17.96875 50.515625 8.265625 \nQ 44.046875 -1.421875 31.78125 -1.421875 \nQ 19.53125 -1.421875 13.0625 8.265625 \nQ 6.59375 17.96875 6.59375 36.375 \nQ 6.59375 54.828125 13.0625 64.515625 \nQ 19.53125 74.21875 31.78125 74.21875 \nz\n\" id=\"DejaVuSans-48\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-53\"/>\n <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_2\">\n <g id=\"line2d_2\">\n <g>\n <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"162.311215\" xlink:href=\"#m4fb94937fa\" y=\"224.64\"/>\n </g>\n </g>\n <g id=\"text_2\">\n <!-- 100 -->\n <g transform=\"translate(152.767465 239.238437)scale(0.1 -0.1)\">\n <defs>\n <path d=\"M 12.40625 8.296875 \nL 28.515625 8.296875 \nL 28.515625 63.921875 \nL 10.984375 60.40625 \nL 10.984375 69.390625 \nL 28.421875 72.90625 \nL 38.28125 72.90625 \nL 38.28125 8.296875 \nL 54.390625 8.296875 \nL 54.390625 0 \nL 12.40625 0 \nz\n\" id=\"DejaVuSans-49\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-49\"/>\n <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\n <use x=\"127.246094\" xlink:href=\"#DejaVuSans-48\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_3\">\n <g id=\"line2d_3\">\n <g>\n <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"228.477223\" xlink:href=\"#m4fb94937fa\" y=\"224.64\"/>\n </g>\n </g>\n <g id=\"text_3\">\n <!-- 150 -->\n <g transform=\"translate(218.933473 239.238437)scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-49\"/>\n <use x=\"63.623047\" xlink:href=\"#DejaVuSans-53\"/>\n <use x=\"127.246094\" xlink:href=\"#DejaVuSans-48\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_4\">\n <g id=\"line2d_4\">\n <g>\n <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"294.643231\" xlink:href=\"#m4fb94937fa\" y=\"224.64\"/>\n </g>\n </g>\n <g id=\"text_4\">\n <!-- 200 -->\n <g transform=\"translate(285.099481 239.238437)scale(0.1 -0.1)\">\n <defs>\n <path d=\"M 19.1875 8.296875 \nL 53.609375 8.296875 \nL 53.609375 0 \nL 7.328125 0 \nL 7.328125 8.296875 \nQ 12.9375 14.109375 22.625 23.890625 \nQ 32.328125 33.6875 34.8125 36.53125 \nQ 39.546875 41.84375 41.421875 45.53125 \nQ 43.3125 49.21875 43.3125 52.78125 \nQ 43.3125 58.59375 39.234375 62.25 \nQ 35.15625 65.921875 28.609375 65.921875 \nQ 23.96875 65.921875 18.8125 64.3125 \nQ 13.671875 62.703125 7.8125 59.421875 \nL 7.8125 69.390625 \nQ 13.765625 71.78125 18.9375 73 \nQ 24.125 74.21875 28.421875 74.21875 \nQ 39.75 74.21875 46.484375 68.546875 \nQ 53.21875 62.890625 53.21875 53.421875 \nQ 53.21875 48.921875 51.53125 44.890625 \nQ 49.859375 40.875 45.40625 35.40625 \nQ 44.1875 33.984375 37.640625 27.21875 \nQ 31.109375 20.453125 19.1875 8.296875 \nz\n\" id=\"DejaVuSans-50\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-50\"/>\n <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\n <use x=\"127.246094\" xlink:href=\"#DejaVuSans-48\"/>\n </g>\n </g>\n </g>\n <g id=\"xtick_5\">\n <g id=\"line2d_5\">\n <g>\n <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"360.809239\" xlink:href=\"#m4fb94937fa\" y=\"224.64\"/>\n </g>\n </g>\n <g id=\"text_5\">\n <!-- 250 -->\n <g transform=\"translate(351.265489 239.238437)scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-50\"/>\n <use x=\"63.623047\" xlink:href=\"#DejaVuSans-53\"/>\n <use x=\"127.246094\" xlink:href=\"#DejaVuSans-48\"/>\n </g>\n </g>\n </g>\n </g>\n <g id=\"matplotlib.axis_2\">\n <g id=\"ytick_1\">\n <g id=\"line2d_6\">\n <defs>\n <path d=\"M 0 0 \nL -3.5 0 \n\" id=\"m3f521a946e\" style=\"stroke:#000000;stroke-width:0.8;\"/>\n </defs>\n <g>\n <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"33.2875\" xlink:href=\"#m3f521a946e\" y=\"224.64\"/>\n </g>\n </g>\n <g id=\"text_6\">\n <!-- 0 -->\n <g transform=\"translate(19.925 228.439219)scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-48\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_2\">\n <g id=\"line2d_7\">\n <g>\n <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"33.2875\" xlink:href=\"#m3f521a946e\" y=\"196.954744\"/>\n </g>\n </g>\n <g id=\"text_7\">\n <!-- 100 -->\n <g transform=\"translate(7.2 200.753963)scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-49\"/>\n <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\n <use x=\"127.246094\" xlink:href=\"#DejaVuSans-48\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_3\">\n <g id=\"line2d_8\">\n <g>\n <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"33.2875\" xlink:href=\"#m3f521a946e\" y=\"169.269488\"/>\n </g>\n </g>\n <g id=\"text_8\">\n <!-- 200 -->\n <g transform=\"translate(7.2 173.068707)scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-50\"/>\n <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\n <use x=\"127.246094\" xlink:href=\"#DejaVuSans-48\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_4\">\n <g id=\"line2d_9\">\n <g>\n <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"33.2875\" xlink:href=\"#m3f521a946e\" y=\"141.584232\"/>\n </g>\n </g>\n <g id=\"text_9\">\n <!-- 300 -->\n <g transform=\"translate(7.2 145.383451)scale(0.1 -0.1)\">\n <defs>\n <path d=\"M 40.578125 39.3125 \nQ 47.65625 37.796875 51.625 33 \nQ 55.609375 28.21875 55.609375 21.1875 \nQ 55.609375 10.40625 48.1875 4.484375 \nQ 40.765625 -1.421875 27.09375 -1.421875 \nQ 22.515625 -1.421875 17.65625 -0.515625 \nQ 12.796875 0.390625 7.625 2.203125 \nL 7.625 11.71875 \nQ 11.71875 9.328125 16.59375 8.109375 \nQ 21.484375 6.890625 26.8125 6.890625 \nQ 36.078125 6.890625 40.9375 10.546875 \nQ 45.796875 14.203125 45.796875 21.1875 \nQ 45.796875 27.640625 41.28125 31.265625 \nQ 36.765625 34.90625 28.71875 34.90625 \nL 20.21875 34.90625 \nL 20.21875 43.015625 \nL 29.109375 43.015625 \nQ 36.375 43.015625 40.234375 45.921875 \nQ 44.09375 48.828125 44.09375 54.296875 \nQ 44.09375 59.90625 40.109375 62.90625 \nQ 36.140625 65.921875 28.71875 65.921875 \nQ 24.65625 65.921875 20.015625 65.03125 \nQ 15.375 64.15625 9.8125 62.3125 \nL 9.8125 71.09375 \nQ 15.4375 72.65625 20.34375 73.4375 \nQ 25.25 74.21875 29.59375 74.21875 \nQ 40.828125 74.21875 47.359375 69.109375 \nQ 53.90625 64.015625 53.90625 55.328125 \nQ 53.90625 49.265625 50.4375 45.09375 \nQ 46.96875 40.921875 40.578125 39.3125 \nz\n\" id=\"DejaVuSans-51\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-51\"/>\n <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\n <use x=\"127.246094\" xlink:href=\"#DejaVuSans-48\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_5\">\n <g id=\"line2d_10\">\n <g>\n <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"33.2875\" xlink:href=\"#m3f521a946e\" y=\"113.898976\"/>\n </g>\n </g>\n <g id=\"text_10\">\n <!-- 400 -->\n <g transform=\"translate(7.2 117.698195)scale(0.1 -0.1)\">\n <defs>\n <path d=\"M 37.796875 64.3125 \nL 12.890625 25.390625 \nL 37.796875 25.390625 \nz\nM 35.203125 72.90625 \nL 47.609375 72.90625 \nL 47.609375 25.390625 \nL 58.015625 25.390625 \nL 58.015625 17.1875 \nL 47.609375 17.1875 \nL 47.609375 0 \nL 37.796875 0 \nL 37.796875 17.1875 \nL 4.890625 17.1875 \nL 4.890625 26.703125 \nz\n\" id=\"DejaVuSans-52\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-52\"/>\n <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\n <use x=\"127.246094\" xlink:href=\"#DejaVuSans-48\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_6\">\n <g id=\"line2d_11\">\n <g>\n <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"33.2875\" xlink:href=\"#m3f521a946e\" y=\"86.21372\"/>\n </g>\n </g>\n <g id=\"text_11\">\n <!-- 500 -->\n <g transform=\"translate(7.2 90.012939)scale(0.1 -0.1)\">\n <use xlink:href=\"#DejaVuSans-53\"/>\n <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\n <use x=\"127.246094\" xlink:href=\"#DejaVuSans-48\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_7\">\n <g id=\"line2d_12\">\n <g>\n <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"33.2875\" xlink:href=\"#m3f521a946e\" y=\"58.528464\"/>\n </g>\n </g>\n <g id=\"text_12\">\n <!-- 600 -->\n <g transform=\"translate(7.2 62.327683)scale(0.1 -0.1)\">\n <defs>\n <path d=\"M 33.015625 40.375 \nQ 26.375 40.375 22.484375 35.828125 \nQ 18.609375 31.296875 18.609375 23.390625 \nQ 18.609375 15.53125 22.484375 10.953125 \nQ 26.375 6.390625 33.015625 6.390625 \nQ 39.65625 6.390625 43.53125 10.953125 \nQ 47.40625 15.53125 47.40625 23.390625 \nQ 47.40625 31.296875 43.53125 35.828125 \nQ 39.65625 40.375 33.015625 40.375 \nz\nM 52.59375 71.296875 \nL 52.59375 62.3125 \nQ 48.875 64.0625 45.09375 64.984375 \nQ 41.3125 65.921875 37.59375 65.921875 \nQ 27.828125 65.921875 22.671875 59.328125 \nQ 17.53125 52.734375 16.796875 39.40625 \nQ 19.671875 43.65625 24.015625 45.921875 \nQ 28.375 48.1875 33.59375 48.1875 \nQ 44.578125 48.1875 50.953125 41.515625 \nQ 57.328125 34.859375 57.328125 23.390625 \nQ 57.328125 12.15625 50.6875 5.359375 \nQ 44.046875 -1.421875 33.015625 -1.421875 \nQ 20.359375 -1.421875 13.671875 8.265625 \nQ 6.984375 17.96875 6.984375 36.375 \nQ 6.984375 53.65625 15.1875 63.9375 \nQ 23.390625 74.21875 37.203125 74.21875 \nQ 40.921875 74.21875 44.703125 73.484375 \nQ 48.484375 72.75 52.59375 71.296875 \nz\n\" id=\"DejaVuSans-54\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-54\"/>\n <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\n <use x=\"127.246094\" xlink:href=\"#DejaVuSans-48\"/>\n </g>\n </g>\n </g>\n <g id=\"ytick_8\">\n <g id=\"line2d_13\">\n <g>\n <use style=\"stroke:#000000;stroke-width:0.8;\" x=\"33.2875\" xlink:href=\"#m3f521a946e\" y=\"30.843209\"/>\n </g>\n </g>\n <g id=\"text_13\">\n <!-- 700 -->\n <g transform=\"translate(7.2 34.642427)scale(0.1 -0.1)\">\n <defs>\n <path d=\"M 8.203125 72.90625 \nL 55.078125 72.90625 \nL 55.078125 68.703125 \nL 28.609375 0 \nL 18.3125 0 \nL 43.21875 64.59375 \nL 8.203125 64.59375 \nz\n\" id=\"DejaVuSans-55\"/>\n </defs>\n <use xlink:href=\"#DejaVuSans-55\"/>\n <use x=\"63.623047\" xlink:href=\"#DejaVuSans-48\"/>\n <use x=\"127.246094\" xlink:href=\"#DejaVuSans-48\"/>\n </g>\n </g>\n </g>\n </g>\n <g id=\"patch_259\">\n <path d=\"M 33.2875 224.64 \nL 33.2875 7.2 \n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n </g>\n <g id=\"patch_260\">\n <path d=\"M 368.0875 224.64 \nL 368.0875 7.2 \n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n </g>\n <g id=\"patch_261\">\n <path d=\"M 33.2875 224.64 \nL 368.0875 224.64 \n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n </g>\n <g id=\"patch_262\">\n <path d=\"M 33.2875 7.2 \nL 368.0875 7.2 \n\" style=\"fill:none;stroke:#000000;stroke-linecap:square;stroke-linejoin:miter;stroke-width:0.8;\"/>\n </g>\n </g>\n </g>\n <defs>\n <clipPath id=\"p8bb13c951c\">\n <rect height=\"217.44\" width=\"334.8\" x=\"33.2875\" y=\"7.2\"/>\n </clipPath>\n </defs>\n</svg>\n",
"image/png": "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\n"
},
"metadata": {
"needs_background": "light"
}
}
],
"source": [
"plt.hist(img.ravel(),256); # ravel()方法将数组维度拉成一维数组 ravel()\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"image/png": "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\nRQlQ/g9HYrA2vIZBfgAAAABJRU5ErkJggg==\n",
"text/plain": [
"<matplotlib.figure.Figure at 0x216fcef24e0>"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"img = cv2.imread('cat.jpg') \n",
"color = ('b','g','r')\n",
"for i,col in enumerate(color): \n",
" histr = cv2.calcHist([img],[i],None,[256],[0,256]) \n",
" plt.plot(histr,color = col) \n",
" plt.xlim([0,256]) \n"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"#### mask掩码操作(框定区域)"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"output_type": "stream",
"name": "stdout",
"text": [
"(414, 500)\n"
]
}
],
"source": [
"# 创建mast\n",
"mask = np.zeros(img.shape[:2], np.uint8) # img.shape[:2] 长宽\n",
"print (mask.shape)\n",
"mask[100:300, 100:400] = 255 # 要保存的区域设置为255\n",
"cv_show(mask,'mask')"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"img = cv2.imread('cat.jpg', 0)\n",
"cv_show(img,'img')"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"masked_img = cv2.bitwise_and(img, img, mask=mask)# bitwise_and 执行与操作\n",
"cv_show(masked_img,'masked_img')"
]
},
{
"cell_type": "code",
"execution_count": 74,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"hist_full = cv2.calcHist([img], [0], None, [256], [0, 256])\n",
"hist_mask = cv2.calcHist([img], [0], mask, [256], [0, 256]) # mask掩码操作"
]
},
{
"cell_type": "code",
"execution_count": 75,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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
gitextract_u125kwrs/
├── .gitignore
├── 00.py
├── 01read_show.py
├── 01项目实战-信用卡数字识别/
│ └── template-matching-ocr/
│ ├── myutils.py
│ └── ocr_template_match.py
├── 02save.py
├── 02项目实战-文档扫描OCR识别/
│ └── Scan/
│ ├── .idea/
│ │ ├── document-scanner.iml
│ │ ├── misc.xml
│ │ ├── modules.xml
│ │ └── workspace.xml
│ ├── scan.py
│ └── test.py
├── LICENSE
├── README.md
├── dataset/
│ └── 2023-02-07-22_46_36.txt
├── practice/
│ └── vis/
│ ├── 01show_bbox.ipynb
│ ├── 02show_line.ipynb
│ └── 03show_text.ipynb
└── 基于python的Opencv项目实战/
├── 图像处理/
│ └── 图像处理-2(直方图&模板匹配).ipynb
└── 图像操作/
├── 图像基本操作.ipynb
└── 图像处理.ipynb
SYMBOL INDEX (6 symbols across 3 files) FILE: 01项目实战-信用卡数字识别/template-matching-ocr/myutils.py function sort_contours (line 12) | def sort_contours(cnts, method="left-to-right"): function resize (line 28) | def resize(image, width=None, height=None, inter=cv2.INTER_AREA): FILE: 01项目实战-信用卡数字识别/template-matching-ocr/ocr_template_match.py function cv_show (line 35) | def cv_show(name,img): FILE: 02项目实战-文档扫描OCR识别/Scan/scan.py function order_points (line 12) | def order_points(pts): function four_point_transform (line 29) | def four_point_transform(image, pts): function resize (line 57) | def resize(image, width=None, height=None, inter=cv2.INTER_AREA):
Condensed preview — 21 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (2,226K chars).
[
{
"path": ".gitignore",
"chars": 5,
"preview": "代码+资料"
},
{
"path": "00.py",
"chars": 33,
"preview": "import cv2\nprint(cv2.__version__)"
},
{
"path": "01read_show.py",
"chars": 204,
"preview": "# encoding:utf-8\nimport cv2\n\nimg = cv2.imread(\"./cat.jpg\")\ncv2.namedWindow(\"Image显示\")\ncv2.imshow(\"Image显示\", img)\ncv2.wai"
},
{
"path": "01项目实战-信用卡数字识别/template-matching-ocr/myutils.py",
"chars": 1292,
"preview": "'''\r\nDescription: OCR-模板匹配 参考:https://www.bilibili.com/video/BV1oJ411D71z?t=11&p=9\r\nAuthor: HCQ\r\nCompany(School): UCAS\r"
},
{
"path": "01项目实战-信用卡数字识别/template-matching-ocr/ocr_template_match.py",
"chars": 5870,
"preview": "'''\nDescription: OCR-模板匹配 参考:https://www.bilibili.com/video/BV1oJ411D71z?t=11&p=9\n运行命令: python ocr_template_match.py "
},
{
"path": "02save.py",
"chars": 674,
"preview": "import cv2\nimport numpy as np\n\nimg = cv2.imread(\"./cat.jpg\")\nemptyImage = np.zeros(img.shape, np.uint8)\n\nemptyImage2 = i"
},
{
"path": "02项目实战-文档扫描OCR识别/Scan/.idea/document-scanner.iml",
"chars": 398,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<module type=\"PYTHON_MODULE\" version=\"4\">\n <component name=\"NewModuleRootManager"
},
{
"path": "02项目实战-文档扫描OCR识别/Scan/.idea/misc.xml",
"chars": 206,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n <component name=\"ProjectRootManager\" version=\"2\" project-"
},
{
"path": "02项目实战-文档扫描OCR识别/Scan/.idea/modules.xml",
"chars": 284,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n <component name=\"ProjectModuleManager\">\n <modules>\n "
},
{
"path": "02项目实战-文档扫描OCR识别/Scan/.idea/workspace.xml",
"chars": 11368,
"preview": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<project version=\"4\">\n <component name=\"ChangeListManager\">\n <list default=\"t"
},
{
"path": "02项目实战-文档扫描OCR识别/Scan/scan.py",
"chars": 2964,
"preview": "# 导入工具包\nimport numpy as np\nimport argparse\nimport cv2\n\n# 设置参数\nap = argparse.ArgumentParser()\nap.add_argument(\"-i\", \"--im"
},
{
"path": "02项目实战-文档扫描OCR识别/Scan/test.py",
"chars": 886,
"preview": "# https://digi.bib.uni-mannheim.de/tesseract/\r\n# 配置环境变量如E:\\Program Files (x86)\\Tesseract-OCR\r\n# tesseract -v进行测试\r\n# tess"
},
{
"path": "LICENSE",
"chars": 1061,
"preview": "MIT License\n\nCopyright (c) 2019 重庆同学\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof th"
},
{
"path": "README.md",
"chars": 1580,
"preview": "# OpenCV\n\n1. 人机互动 2、物体识别 3、图像分割 4、人脸识别 5、动作识别 6、运动跟踪 7、机器人 8、运动分析 9、机器视觉 10、结构分析 11、汽车安全驾驶\n\n官网: [opencv](https://github."
},
{
"path": "dataset/2023-02-07-22_46_36.txt",
"chars": 4341,
"preview": "356405 1 1 9 26 118 107 255 5 3 28.327288 3.553004 -26.717430\n369174 1 1 -25 34 122 99 255 2 2 38.559292 -15.835225 -30."
},
{
"path": "practice/vis/01show_bbox.ipynb",
"chars": 518,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": null,\n \"metadata\": {},\n \"outputs\": [],\n \"source\": "
},
{
"path": "practice/vis/02show_line.ipynb",
"chars": 4603,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {},\n \"source\": []\n },\n {\n \"cell_type\": \"markdown\",\n "
},
{
"path": "practice/vis/03show_text.ipynb",
"chars": 518,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": null,\n \"metadata\": {},\n \"outputs\": [],\n \"source\": "
},
{
"path": "基于python的Opencv项目实战/图像处理/图像处理-2(直方图&模板匹配).ipynb",
"chars": 1063234,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"code\",\n \"execution_count\": 1,\n \"metadata\": {\n \"collapsed\": true\n },\n \"outp"
},
{
"path": "基于python的Opencv项目实战/图像操作/图像基本操作.ipynb",
"chars": 440581,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {},\n \"source\": [\n \"## 图像基本操作\"\n ]\n },\n {\n \"cell_t"
},
{
"path": "基于python的Opencv项目实战/图像操作/图像处理.ipynb",
"chars": 619047,
"preview": "{\n \"cells\": [\n {\n \"cell_type\": \"markdown\",\n \"metadata\": {},\n \"source\": [\n \"### 灰度图\"\n ]\n },\n {\n \"cell_typ"
}
]
About this extraction
This page contains the full source code of the HuangCongQing/OpenCV GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 21 files (2.1 MB), approximately 541.0k tokens, and a symbol index with 6 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.