1、邊緣檢測cv2.canny()函式
1、cv2.canny(
)函式原型
edge = cv2.canny(image, threshold1, threshold2[
, edges[
, aperturesize[
, l2gradient ]]]
)image:原影象
threshold1,
2 是閾值,兩個閾值相互作用
大部分情況下這三個引數就夠了,如果有需要可以新增
針對這個專案:
edged = cv2.canny(image,70,
200) 實現邊緣檢測之前通常進行gauss降噪
2、邊緣檢測與輪廓檢測之間的區別:
1)、邊緣檢測是影象處理和計算機視覺中的基本問題,邊緣檢測的目的是標識數字影象中亮度變化明顯的點。影象屬性中的顯著變化通常來反映了屬性的重要事件和變化。 這些包括(i)深度上的不連續自、(ii)表面方向不連續、(iii)物質屬性變化和(iv)場景照明變化。 邊緣檢測是影象處理和計算機視覺中,尤其是特徵提提取中的乙個研究領域。
2)、輪廓提取是提取出想要得到的輪廓 輪廓可能是邊緣的一部分。
3、image 模組
image 模組
image 模組提供了同名的類用來表示pil的影象。image模組還提供了許多任務廠(factory)函式,包塊從檔案載入影象的函式,以及建立新影象的函式。
image.open(filename)
image.new()
4、程式原始碼
import argparse
import numpy as np
import cv2
from functions import
*from pil import image
import pytesseract
import os
from imutils import contours
# from pyimagesearch.transform import four_point_transform
ap = argparse.argumentparser(
)ap.add_argument(
'-i'
,'--image'
,required =
true
,help
="path to the image to be scanned"
)args =
vars
(ap.parse_args())
# 生成除錯引數的字典
image = cv2.imread(args[
'image'])
orig = image.copy(
)ratio = image.shape[0]
/500.0
image = resize(image.copy(
),height=
500)
# cv_show('image',image)
gray = cv2.cvtcolor(image,cv2.color_bgr2gray)
# cv_show('gray',gray)
gauss = cv2.gaussianblur(gray,(5
,5),
0)# cv_show('gauss',gauss)
edged = cv2.canny(gauss,70,
200)
# 邊緣檢測
cv_show(
'edged'
,edged)
print
("step 1: 邊緣檢測"
)# 輪廓檢測
cnts = cv2.findcontours(edged.copy()[
0]cnts =
sorted
(cnts,key=cv2.contourarea,reverse=
true)[
:5]# 將輪廓排序
cv2.drawcontours(image, cnts,-1
,(0,
255,0)
,2)cv_show(
'ss'
,image)
for c in cnts:
peri = cv2.arclength(c,
true
)# true 代表是乙個閉集 c:代表輸入的點集
0.02
*peri,
true
)# 0.02精度正好,但是如果對於0.2的話精度太大,可能顯示不出來
print(1
)iflen==4:
break
print
("step 2 展示輪廓"
)cv2.drawcontours(image,
[screencnt],-
1,(0
,255,0
),2)
cv_show(
'image_lunkuo'
,image)
# 透視變換
warped = four_point_transform(orig, screencnt.reshape(4,
2)* ratio)
# 二值處理
# 展示結果
print
("step 3: 變換"
)cv2.imshow(
"original"
, resize(orig, height =
650)
)cv2.imshow(
"scanned"
, resize(ref, height =
650)
)cv2.waitkey(0)
"""practice: 檢測結果的準確性
)# 所儲存的
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)
02 文件掃瞄OCR識別
一 主要 import cv2 as cv import numpy as np import matplotlib.pyplot as plt defimg show img name,img cv.imshow img name,img cv.waitkey 0 cv.destroyallwin...
OCR應用(證件識別 文件識別)
1 ocr識別 證件識別 高效 識別率高達99.7 單張識別速度小於1秒,領先業內 方便 該識別服務更新維護方便,企業可自行進行更新維護 全面 可識別身份證 護照 行駛證 駕駛證等30多種證件 1 希望將紙質書籍或紙質資料中的文字資訊,進行ocr識別轉換成可編輯的電子版檔案 2 希望將各類證件 如身...
OCR技術識別文件的技術
ocr技術識別文件的概括 我們常說的ocr 文字識別 ocr技術識別文件是指通過電子裝置等將紙質上的文字識別出來,形成可編輯的文字。ocr技術識別文件的流程 常規的ocr文字識別處理的過程包括 1 影象輸入 預處理 二值化 雜訊去除 傾斜較正 2 版面分析 把頁面分為橫排文字 豎排文字 等不同區域,...