国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

深度學(xué)習(xí)圖像處理基礎(chǔ)工具——opencv 實(shí)戰(zhàn)信用卡數(shù)字識別

這篇具有很好參考價值的文章主要介紹了深度學(xué)習(xí)圖像處理基礎(chǔ)工具——opencv 實(shí)戰(zhàn)信用卡數(shù)字識別。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

任務(wù) 信用卡數(shù)字識別

穿插之前學(xué)的知識點(diǎn)? 形態(tài)學(xué)操作 模板匹配 等

總體流程與方法

1.有一個模板 2 用輪廓檢測把模板中數(shù)字拿出來 外接矩形(模板和輸入圖像的大小要一致

)3 一系列預(yù)處理操作

深度學(xué)習(xí)圖像處理基礎(chǔ)工具——opencv 實(shí)戰(zhàn)信用卡數(shù)字識別,python深度學(xué)習(xí),opencv,圖像處理,opencv,人工智能

問題的解決思路

1.分析準(zhǔn)備:準(zhǔn)備模板,讀取文件——轉(zhuǎn)化為灰度圖——轉(zhuǎn)化為二值圖——提取輪廓——遍歷每一個輪廓 得到每個數(shù)字的模板,排序,大小裁剪為指定大?。?7*88)digits[i] = roi

2.處理輸入的帶數(shù)字的銀行卡? (1)預(yù)處理 我們需要拿到的是 一組一組的數(shù)字 一共四組? 讀取文件——變換大小——轉(zhuǎn)化為灰度圖——形態(tài)學(xué)操作(禮帽操作突出明亮區(qū)域——梯度操作計(jì)算輪廓信息——閉操作將數(shù)字連在一起——二值化操作尋找合適閾值——再來一個閉操作——計(jì)算輪廓——遍歷輪廓(選擇合適區(qū)域 排除不是數(shù)字的輪廓)——輪廓排序——遍歷輪廓的每一個數(shù)字——預(yù)處理計(jì)算每一組輪廓——計(jì)算每一組中的每一個值——匹配得分——得到數(shù)字畫出來——得到結(jié)果——打印結(jié)果)

#設(shè)置參數(shù)

ap = argparse.ArgumentParser()#編寫命令行接口
ap.add_argument("-i", "--image", required=True,
	help="path to input image")#添加命令行參數(shù)
ap.add_argument("-t", "--template", required=True,
	help="path to template OCR-A image")
args = vars(ap.parse_args())#解析參數(shù) 將參數(shù)轉(zhuǎn)化為字典的形式

深度學(xué)習(xí)圖像處理基礎(chǔ)工具——opencv 實(shí)戰(zhàn)信用卡數(shù)字識別,python深度學(xué)習(xí),opencv,圖像處理,opencv,人工智能

img = cv2.imread(args["template"])
def cv_show(name,img):
    cv2.imshow(name, img)
    cv2.waitKey(0)# waitKey()#是在一個給定的時間內(nèi)(單位ms)等待用戶按鍵觸發(fā) 0 無限等待 按任意鍵繼續(xù)
    cv2.destroyAllWindows()

1.cv2.cvtColor顏色空間轉(zhuǎn)換函數(shù)?cv2.imread()和cv2.cvtColor() 的使用-CSDN博客

ref = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)#顏色空間轉(zhuǎn)換函數(shù)
2.cv2.threshold  二值化函數(shù) [OpenCV] cv2.threshold二值化函數(shù)使用方法總結(jié)_cv2.threshold函數(shù)-CSDN博客
ref = cv2.threshold(ref, 100, 255, cv2.THRESH_BINARY_INV)[1]#二值化函數(shù)

3.計(jì)算輪廓?

refCnts, hierarchy = cv2.findContours(ref.copy(), cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)#查找輪廓函數(shù) 只檢測外輪廓 只保留四個點(diǎn)輪廓信息

4.畫出輪廓

cv2.drawContours(img,refCnts,-1,(0,0,255),3) #畫出輪廓函數(shù)

5.輪廓排序

refCnts = myutils.sort_contours(refCnts, method="left-to-right")[0] #排序,從左到右,從上到下

6.遍歷輪廓

digits = {}
# 遍歷每一個輪廓
for (i, c) in enumerate(refCnts):
    # 計(jì)算外接矩形并且resize成合適大小
    (x, y, w, h) = cv2.boundingRect(c)
    roi = ref[y:y + h, x:x + w]
    roi = cv2.resize(roi, (57, 88))
    # 每一個數(shù)字對應(yīng)每一個模板
    digits[i] = roi
2.0初始化卷積核
rectKernel = cv2.getStructuringElement(cv2.MORPH_RECT, (9, 3))
sqKernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5))

2.1 對要識別的圖像進(jìn)行大小灰度處理

#讀取輸入圖像,預(yù)處理
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)

2.2?#禮帽操作,突出更明亮的區(qū)域

#禮帽操作,突出更明亮的區(qū)域
tophat = cv2.morphologyEx(gray, cv2.MORPH_TOPHAT, rectKernel)
cv_show('tophat',tophat)
#
gradX = cv2.Sobel(tophat, ddepth=cv2.CV_32F, dx=1, dy=0, #ksize=-1相當(dāng)于用3*3的
    ksize=-1)


gradX = np.absolute(gradX)
(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)
2.3#通過閉操作(先膨脹,再腐蝕)將數(shù)字連在一起
gradX = cv2.morphologyEx(gradX, cv2.MORPH_CLOSE, rectKernel) 
cv_show('gradX',gradX)
#THRESH_OTSU會自動尋找合適的閾值,適合雙峰,需把閾值參數(shù)設(shè)置為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)

2.4# 計(jì)算輪廓

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):
    # 計(jì)算矩形
    (x, y, w, h) = cv2.boundingRect(c)
    ar = w / float(h)

    # 選擇合適的區(qū)域,根據(jù)實(shí)際任務(wù)來,這里的基本都是四個數(shù)字一組
    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 = []

# 遍歷每一個輪廓中的數(shù)字
for (i, (gX, gY, gW, gH)) in enumerate(locs):
    # initialize the list of group digits
    groupOutput = []

    # 根據(jù)坐標(biāo)提取每一個組
    group = gray[gY - 5:gY + gH + 5, gX - 5:gX + gW + 5]
    cv_show('group',group)
    # 預(yù)處理
    group = cv2.threshold(group, 0, 255,
       cv2.THRESH_BINARY | cv2.THRESH_OTSU)[1]
    cv_show('group',group)
    # 計(jì)算每一組的輪廓
    digitCnts,hierarchy = cv2.findContours(group.copy(), cv2.RETR_EXTERNAL,
       cv2.CHAIN_APPROX_SIMPLE)
    digitCnts = contours.sort_contours(digitCnts,
       method="left-to-right")[0]

    # 計(jì)算每一組中的每一個數(shù)值
    for c in digitCnts:
       # 找到當(dāng)前數(shù)值的輪廓,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)

       # 計(jì)算匹配得分
       scores = []

       # 在模板中計(jì)算每一個得分
       for (digit, digitROI) in digits.items():
          # 模板匹配
          result = cv2.matchTemplate(roi, digitROI,
             cv2.TM_CCOEFF)
          (_, score, _, _) = cv2.minMaxLoc(result)
          scores.append(score)

       # 得到最合適的數(shù)字
       groupOutput.append(str(np.argmax(scores)))

    # 畫出來
    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)

    # 得到結(jié)果
    output.extend(groupOutput)

# 打印結(jié)果
print("Credit Card Type: {}".format(FIRST_NUMBER[output[0]]))
print("Credit Card #: {}".format("".join(output)))
cv2.imshow("Image", image)
cv2.waitKey(0)

總的代碼文章來源地址http://www.zghlxwxcb.cn/news/detail-851923.html

# 導(dǎo)入工具包
from imutils import contours
import numpy as np
import argparse
import cv2
import myutils

# 設(shè)置參數(shù)
ap = argparse.ArgumentParser()#編寫命令行接口
ap.add_argument("-i", "--image", required=True,
	help="path to input image")#添加命令行參數(shù)
ap.add_argument("-t", "--template", required=True,
	help="path to template OCR-A image")
args = vars(ap.parse_args())#解析參數(shù) 將參數(shù)轉(zhuǎn)化為字典的形式

# 指定信用卡類型
FIRST_NUMBER = {
	"3": "American Express",
	"4": "Visa",
	"5": "MasterCard",
	"6": "Discover Card"
}
# 繪圖展示
def cv_show(name,img):
	cv2.imshow(name, img)
	cv2.waitKey(0)# waitKey()–是在一個給定的時間內(nèi)(單位ms)等待用戶按鍵觸發(fā) 0 無限等待 按任意鍵繼續(xù)
	cv2.destroyAllWindows()
# 讀取一個模板圖像
img = cv2.imread(args["template"])
cv_show('img',img)
# 灰度圖
ref = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)#顏色空間轉(zhuǎn)換函數(shù)
cv_show('ref',ref)
# 二值圖像
ref = cv2.threshold(ref, 100, 255, cv2.THRESH_BINARY_INV)[1]#二值化函數(shù)
cv_show('ref',ref)

# 計(jì)算輪廓
#cv2.findContours()函數(shù)接受的參數(shù)為二值圖,即黑白的(不是灰度圖),cv2.RETR_EXTERNAL只檢測外輪廓,cv2.CHAIN_APPROX_SIMPLE只保留終點(diǎn)坐標(biāo)
#返回的list中每個元素都是圖像中的一個輪廓

refCnts, hierarchy = cv2.findContours(ref.copy(), cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)#查找輪廓函數(shù) 只檢測外輪廓 只保留四個點(diǎn)輪廓信息

cv2.drawContours(img,refCnts,-1,(0,0,255),3) #畫出輪廓函數(shù)
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):
	# 計(jì)算外接矩形并且resize成合適大小
	(x, y, w, h) = cv2.boundingRect(c)
	roi = ref[y:y + h, x:x + w]
	roi = cv2.resize(roi, (57, 88))
	# 每一個數(shù)字對應(yīng)每一個模板
	digits[i] = roi

# 初始化卷積核
rectKernel = cv2.getStructuringElement(cv2.MORPH_RECT, (9, 3))
sqKernel = cv2.getStructuringElement(cv2.MORPH_RECT, (5, 5))

#讀取輸入圖像,預(yù)處理
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)

#禮帽操作,突出更明亮的區(qū)域
tophat = cv2.morphologyEx(gray, cv2.MORPH_TOPHAT, rectKernel)
cv_show('tophat',tophat)
#
gradX = cv2.Sobel(tophat, ddepth=cv2.CV_32F, dx=1, dy=0, #ksize=-1相當(dāng)于用3*3的
	ksize=-1)


gradX = np.absolute(gradX)
(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)

#通過閉操作(先膨脹,再腐蝕)將數(shù)字連在一起
gradX = cv2.morphologyEx(gradX, cv2.MORPH_CLOSE, rectKernel)
cv_show('gradX',gradX)
#THRESH_OTSU會自動尋找合適的閾值,適合雙峰,需把閾值參數(shù)設(shè)置為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)

# 計(jì)算輪廓

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):
	# 計(jì)算矩形
	(x, y, w, h) = cv2.boundingRect(c)
	ar = w / float(h)

	# 選擇合適的區(qū)域,根據(jù)實(shí)際任務(wù)來,這里的基本都是四個數(shù)字一組
	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 = []

# 遍歷每一個輪廓中的數(shù)字
for (i, (gX, gY, gW, gH)) in enumerate(locs):
	# initialize the list of group digits
	groupOutput = []

	# 根據(jù)坐標(biāo)提取每一個組
	group = gray[gY - 5:gY + gH + 5, gX - 5:gX + gW + 5]
	cv_show('group',group)
	# 預(yù)處理
	group = cv2.threshold(group, 0, 255,
		cv2.THRESH_BINARY | cv2.THRESH_OTSU)[1]
	cv_show('group',group)
	# 計(jì)算每一組的輪廓
	digitCnts,hierarchy = cv2.findContours(group.copy(), cv2.RETR_EXTERNAL,
		cv2.CHAIN_APPROX_SIMPLE)
	digitCnts = contours.sort_contours(digitCnts,
		method="left-to-right")[0]

	# 計(jì)算每一組中的每一個數(shù)值
	for c in digitCnts:
		# 找到當(dāng)前數(shù)值的輪廓,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)

		# 計(jì)算匹配得分
		scores = []

		# 在模板中計(jì)算每一個得分
		for (digit, digitROI) in digits.items():
			# 模板匹配
			result = cv2.matchTemplate(roi, digitROI,
				cv2.TM_CCOEFF)
			(_, score, _, _) = cv2.minMaxLoc(result)
			scores.append(score)

		# 得到最合適的數(shù)字
		groupOutput.append(str(np.argmax(scores)))

	# 畫出來
	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)

	# 得到結(jié)果
	output.extend(groupOutput)

# 打印結(jié)果
print("Credit Card Type: {}".format(FIRST_NUMBER[output[0]]))
print("Credit Card #: {}".format("".join(output)))
cv2.imshow("Image", image)
cv2.waitKey(0)

到了這里,關(guān)于深度學(xué)習(xí)圖像處理基礎(chǔ)工具——opencv 實(shí)戰(zhàn)信用卡數(shù)字識別的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • opencv-圖像處理基礎(chǔ)-二值圖像

    opencv-圖像處理基礎(chǔ)-二值圖像

    1.二值圖像 二值圖像是指僅僅包含黑色和白色兩種顏色的圖像。 在計(jì)算機(jī)中,通過一個柵格狀排列的數(shù)據(jù)集(矩陣)來表示和處理圖像。例如,圖 2-1 是 一個字母 A 的圖像,計(jì)算機(jī)在處理該圖像時,會首先將其劃分為一個個的小方塊,每一個小方 塊就是一個獨(dú)立的處理單位

    2024年02月15日
    瀏覽(26)
  • OpenCV+Qt實(shí)現(xiàn)圖像處理操作工具

    OpenCV+Qt實(shí)現(xiàn)圖像處理操作工具

    Qt界面實(shí)現(xiàn) 雪花屏 高斯模糊 中值濾波 毛玻璃 灰度化 XY方向模糊 雙邊模糊 腐蝕 [圖像處理操作] 要求左邊原圖,右邊效果圖 結(jié)果展示如下:[圖像處理實(shí)現(xiàn)有點(diǎn)多,就不一個一個地展示了,各別展示如下] 雪花屏 本文福利, 莬 費(fèi)領(lǐng)取Qt開發(fā)學(xué)習(xí)資料包、技術(shù)視頻,內(nèi)容包括(

    2024年02月06日
    瀏覽(22)
  • Opencv 圖像處理:圖像基礎(chǔ)操作與灰度轉(zhuǎn)化

    Opencv 圖像處理:圖像基礎(chǔ)操作與灰度轉(zhuǎn)化

    本文已收錄于Opencv系列專欄: 深入淺出OpenCV ,專欄旨在詳解Python版本的Opencv,為計(jì)算機(jī)視覺的開發(fā)與研究打下堅(jiān)實(shí)基礎(chǔ)。免費(fèi)訂閱,持續(xù)更新。 1.圖像格式 圖像壓縮比: 通過編碼器壓縮后的圖象數(shù)字大小和原圖象數(shù)字大小的壓縮比。 BMP 格式 Windows系統(tǒng)下的 標(biāo)準(zhǔn)位圖格式 ,

    2024年02月04日
    瀏覽(31)
  • OpenCV實(shí)戰(zhàn)(1)——OpenCV與圖像處理基礎(chǔ)

    OpenCV實(shí)戰(zhàn)(1)——OpenCV與圖像處理基礎(chǔ)

    OpenCV 是一個的跨平臺計(jì)算機(jī)視覺庫,包含了 500 多個用于圖像和視頻分析的高效算法。本節(jié)將介紹 OpenCV 的基礎(chǔ)知識,以及如何編譯運(yùn)行 OpenCV 程序,并將學(xué)習(xí)如何完成最基本的圖像處理任務(wù)——讀取、顯示和保存圖像。除此之外,鼠標(biāo)事件和圖形繪制也是 OpenCV 計(jì)算機(jī)視覺項(xiàng)

    2024年02月05日
    瀏覽(31)
  • (3-1)OpenCV圖像視覺處理:OpenCV基礎(chǔ)

    OpenCV(Open Source Computer Vision Library)是一個開源的計(jì)算機(jī)視覺庫,它提供了很多函數(shù),這些函數(shù)非常高效地實(shí)現(xiàn)了計(jì)算機(jī)視覺算法(最基本的濾波到高級的物體檢測皆有涵蓋)。在本章的內(nèi)容中,將詳細(xì)講解在P ython程序中使用 OpenCV 實(shí)現(xiàn) 圖像視覺處理的 知識,為讀者步入本書

    2024年02月21日
    瀏覽(97)
  • OpenCV圖像處理基礎(chǔ)(C++版)

    OpenCV圖像處理基礎(chǔ)(C++版)

    目錄 OpenCV環(huán)境搭建 加載 修改 保存圖像 矩陣的掩膜操作 Mat對象 圖像操作 圖像混合 調(diào)整圖像亮度與對比度 繪制形狀與文字 模糊圖像一 模糊圖像二 膨脹與腐蝕 形態(tài)學(xué)操作 形態(tài)學(xué)操作應(yīng)用-提取水平線和垂直線 圖像金字塔-上采集與降采集 基本閾值操作 自定義線性濾波 處理

    2024年02月04日
    瀏覽(19)
  • QT+OpenCV實(shí)現(xiàn)一個標(biāo)注工具(圖像處理、邊緣檢測)

    QT+OpenCV實(shí)現(xiàn)一個標(biāo)注工具(圖像處理、邊緣檢測)

    作者是一名QT初學(xué)者,為檢驗(yàn)學(xué)習(xí)成果及完成畢業(yè)設(shè)計(jì),在張老師和學(xué)姐的指導(dǎo)下,開發(fā)了這個標(biāo)注工具。CSDN上很多文章對我的學(xué)習(xí)提供了極大的幫助,分享這篇文章給需要的人一起學(xué)習(xí)進(jìn)步~ 廢話不多說,先看看效果: Windows10、Qt5.13.2(編譯器用的是MinGW64_bit)、OpenCV4.1 環(huán)

    2024年02月11日
    瀏覽(28)
  • Python 基于 OpenCV 視覺圖像處理實(shí)戰(zhàn) 之 OpenCV 視頻圖像處理基礎(chǔ)操作 之 視頻捕獲/存儲/提取/合成/合并

    目錄 Python 基于 OpenCV 視覺圖像處理實(shí)戰(zhàn) 之 OpenCV 視頻圖像處理基礎(chǔ)操作 之 視頻捕獲/存儲/提取/合成/合并 一、簡單介紹 二、視頻處理流程和原理 三、視頻的捕獲和存儲 四、提取視頻中的某些幀 五、將圖片合成為視頻 六、多個視頻合并 Python是一種跨平臺的計(jì)算機(jī)程序設(shè)計(jì)

    2024年04月10日
    瀏覽(164)
  • OpenCV [c++](圖像處理基礎(chǔ)示例程序匯總)

    OpenCV [c++](圖像處理基礎(chǔ)示例程序匯總)

    目錄 一、圖像讀取與顯示 二、圖像預(yù)處理[高斯濾波、canny邊緣檢測、膨脹腐蝕] Canny邊緣檢測 三、圖像裁剪 ?四、繪制形狀和添加文本 ?五、透視投影變換矯正 ?六、顏色檢測 ?七、形狀檢測和輪廓檢測[findContours(),approxPolyDP()] ??八、人臉識別 九、虛擬畫筆作畫 十、文檔掃

    2024年02月04日
    瀏覽(30)
  • 【OpenCV入門】第一部分——圖像處理基礎(chǔ)

    【OpenCV入門】第一部分——圖像處理基礎(chǔ)

    圖像處理包括4個基本操作: 讀取圖像 、 顯示圖像 、 保存圖像 和 獲取圖像屬性 。 imread() filename :目標(biāo)圖像的完整路徑名。 flags :圖像的顏色類型的標(biāo)記,有0和1兩個值,其中1為默認(rèn)值。當(dāng)讀取一幅彩色圖像時,如果想要得到一幅 彩色圖像 ,那么flags的值為1(此時flags的

    2024年02月11日
    瀏覽(36)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包