0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

詳解OpenCV入門(mén)知識(shí)圖片預(yù)處理

新機(jī)器視覺(jué) ? 來(lái)源:QbitAI ? 作者:量子位 ? 2021-04-14 14:46 ? 次閱讀

OpenCV是一個(gè)跨平臺(tái)計(jì)算機(jī)視覺(jué)機(jī)器學(xué)習(xí)算法庫(kù)。它不僅能用來(lái)實(shí)現(xiàn)各種復(fù)雜的算法,還能夠?qū)D像進(jìn)行預(yù)處理:包括圖像的平移、旋轉(zhuǎn)、縮放、翻轉(zhuǎn)、裁剪。希望把這些知識(shí)分享給初學(xué)者。

圖像平移

我們使用OpenCV提供的仿射變換函數(shù)cv.warpAffine()沿x和y軸移動(dòng)圖像。

Step1. 調(diào)用一個(gè)函數(shù)cv.warpAffine()。

Step2. 創(chuàng)建一個(gè)平移矩陣,這一步需要借助NumPy進(jìn)行。

Step3. 將img(需要變換的圖像)、transMAT(平移矩陣)和Dimensions(維度)代入仿射變換函數(shù)cv.warpAffine(),輸入x和y以確定平移多少。

向左、向上移動(dòng),則x、y設(shè)為負(fù)數(shù),反之則為正數(shù)。

Step4. 采用cv.imshow()函數(shù)顯示圖像。

## Translation

def translation(img,x,y):

tranMAT = np.float32([[1,0,x],[0,1,y]])

dimensions = (img.shape[1],img.shape[0])

return cv.warpAffine(img,transMAT,dimensions)

translated = translation(img,-100,100)

cv.imshow(“Translated”,translated)

cv.waitKey(0)

圖像旋轉(zhuǎn)

在OpenCV中旋轉(zhuǎn)圖像,可以將任何點(diǎn)用作旋轉(zhuǎn)的中心,同樣使用cv.warpAffine()函數(shù)以及和上面相同的參數(shù)。但是旋轉(zhuǎn)矩陣與圖像平移是不同的。

Step1. 創(chuàng)建一個(gè)旋轉(zhuǎn)函數(shù),定義圖像img、旋轉(zhuǎn)角度angle和旋轉(zhuǎn)點(diǎn)rotPoint。

Step2. 利用cv.getRotationMatrix2D()(矩陣旋轉(zhuǎn)與縮放)創(chuàng)建一個(gè)旋轉(zhuǎn)矩陣rotMAT,其中包括旋轉(zhuǎn)點(diǎn)、旋轉(zhuǎn)角度和比例因子。如果不需要比例因子,則將其設(shè)為1.0。

Step3. 輸入旋轉(zhuǎn)角度、旋轉(zhuǎn)點(diǎn)對(duì)應(yīng)數(shù)值。(如不需要設(shè)置旋轉(zhuǎn)點(diǎn),則在Step1中設(shè)為空值None)

## Rotation

def rotate(img,angle,rotPoint=None):

(height,width) = img,shape[:2]

if rotPoint is None:

rotPoint = (width//2,height//2)

rotMAT = cv.getRotationMatrix2D(rotPoint,angle,1.0)

dimension = (width,height)

return cv.warpAffine(img,rotMat,dimension)

rotated = rotated(img,20)

cv.imshow(“Rotated”,rotated)

cv.waitKey(0)

圖片縮放

在OpenCV中需要用到函數(shù)cv.resize(img, (500, 500), interpolation=cv.INTER_LINEAR)。

根據(jù)縮小或放大圖像的需要,參數(shù)指定插值方法可以選擇cv.INTER_AREA(區(qū)域插值)、cv.INTER_CUBIC(三次樣條插值)、cv.INTER_LINEAR(線性插值)。

如需放大圖像,可以采用《》 INTER_LINEAR(效率較高)或INTER_CUBIC(效率較低);

如需縮小圖像,可以采用《》 INTER_AREA。

## Resize

resized = cv.resize(img(500,500),interpolation=cv.INTER_LINEAR)

cv.imshow(“resized”,resized)

cv.waitKey(0)

圖片翻轉(zhuǎn)

使用OpenCV中的cv.flip()函數(shù),該函數(shù)支持圖像的翻轉(zhuǎn)(垂直翻轉(zhuǎn)、水平翻轉(zhuǎn),以及同時(shí)翻轉(zhuǎn)均可)。

cv.flip(img,flipcode)翻轉(zhuǎn)模式有三種:0為垂直翻轉(zhuǎn),1為水平翻轉(zhuǎn),-1 為兩個(gè)方向同時(shí)翻轉(zhuǎn)。

## Flipping

flipped = cv.flip(img,0)

cv.imshow(“Flipped”,flipped)

cv.waitKey(0)

圖像裁剪

運(yùn)用Cropped = image[a1:a2,b1:b2] 裁剪圖像img得到一個(gè)矩形,高度從a1到a2,寬度從b1到b2。

## Cropping

cropped = img[100:200,100:200]

cv.imshow(“Cropped”,cropped)

cv.waitKey(0)

除此之外,OpenCV還能用于空間顏色轉(zhuǎn)換、物體跟蹤、圖像分割、輪廓提取、結(jié)構(gòu)分析、人臉識(shí)別等,功能十分強(qiáng)大。

Raoof Naushad不僅發(fā)布了這篇教程,還分享了用于基本和高級(jí)圖像處理的OpenCV速查表,感興趣的朋友可以通過(guò)下方鏈接查看。
編輯:lyn

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • OpenCV
    +關(guān)注

    關(guān)注

    29

    文章

    622

    瀏覽量

    41089
  • 圖像平移
    +關(guān)注

    關(guān)注

    0

    文章

    2

    瀏覽量

    5384

原文標(biāo)題:【OpenCV入門(mén)】手把手教你圖片預(yù)處理

文章出處:【微信號(hào):vision263com,微信公眾號(hào):新機(jī)器視覺(jué)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    C55x CSL音頻預(yù)處理

    電子發(fā)燒友網(wǎng)站提供《C55x CSL音頻預(yù)處理.pdf》資料免費(fèi)下載
    發(fā)表于 09-19 11:30 ?0次下載
    C55x CSL音頻<b class='flag-5'>預(yù)處理</b>

    opencv-python和opencv一樣嗎

    不一樣。OpenCV(Open Source Computer Vision Library)是一個(gè)開(kāi)源的計(jì)算機(jī)視覺(jué)和機(jī)器學(xué)習(xí)軟件庫(kù),它提供了大量的圖像和視頻處理功能。OpenCV
    的頭像 發(fā)表于 07-16 10:38 ?442次閱讀

    知識(shí)圖譜與大模型之間的關(guān)系

    在人工智能的廣闊領(lǐng)域中,知識(shí)圖譜與大模型是兩個(gè)至關(guān)重要的概念,它們各自擁有獨(dú)特的優(yōu)勢(shì)和應(yīng)用場(chǎng)景,同時(shí)又相互補(bǔ)充,共同推動(dòng)著人工智能技術(shù)的發(fā)展。本文將從定義、特點(diǎn)、應(yīng)用及相互關(guān)系等方面深入探討知識(shí)圖譜與大模型之間的關(guān)系。
    的頭像 發(fā)表于 07-10 11:39 ?623次閱讀

    信號(hào)的預(yù)處理包括哪些環(huán)節(jié)

    信號(hào)預(yù)處理是信號(hào)處理的一個(gè)重要環(huán)節(jié),它對(duì)信號(hào)進(jìn)行一系列的操作,以便于后續(xù)的分析和處理。信號(hào)預(yù)處理的目的是提高信號(hào)的質(zhì)量,減少噪聲,保留有用的信息,以及滿足后續(xù)
    的頭像 發(fā)表于 06-03 10:35 ?1298次閱讀

    C語(yǔ)言中的預(yù)處理

    所有的預(yù)處理器命令都是以井號(hào)(#)開(kāi)頭。它必須是第一個(gè)非空字符,為了增強(qiáng)可讀性,預(yù)處理器指令應(yīng)從第一列開(kāi)始。
    發(fā)表于 03-01 12:16 ?665次閱讀
    C語(yǔ)言中的<b class='flag-5'>預(yù)處理</b>器

    利用知識(shí)圖譜與Llama-Index技術(shù)構(gòu)建大模型驅(qū)動(dòng)的RAG系統(tǒng)(下)

    對(duì)于語(yǔ)言模型(LLM)幻覺(jué),知識(shí)圖譜被證明優(yōu)于向量數(shù)據(jù)庫(kù)。知識(shí)圖譜提供更準(zhǔn)確、多樣化、有趣、邏輯和一致的信息,減少了LLM中出現(xiàn)幻覺(jué)的可能性。
    的頭像 發(fā)表于 02-22 14:13 ?946次閱讀
    利用<b class='flag-5'>知識(shí)圖</b>譜與Llama-Index技術(shù)構(gòu)建大模型驅(qū)動(dòng)的RAG系統(tǒng)(下)

    OpenCV入門(mén):了解與安裝指南

    OpenCV致力于高效運(yùn)算和即時(shí)應(yīng)用開(kāi)發(fā)。因其是用優(yōu)化的C/C++編寫(xiě)的,故其可以充分利用多核處理優(yōu)勢(shì)。 并且還啟用了OpenSL,它可以利用底層異構(gòu)計(jì)算平臺(tái)的硬件加速。
    的頭像 發(fā)表于 02-21 14:26 ?499次閱讀
    <b class='flag-5'>OpenCV</b><b class='flag-5'>入門(mén)</b>:了解與安裝指南

    知識(shí)圖譜基礎(chǔ)知識(shí)應(yīng)用和學(xué)術(shù)前沿趨勢(shì)

    知識(shí)圖譜(Knowledge Graph)以結(jié)構(gòu)化的形式描述客觀世界中概念、實(shí)體及其關(guān)系。是融合了認(rèn)知計(jì)算、知識(shí)表示與推理、信息檢索與抽取、自然語(yǔ)言處理、Web技術(shù)、機(jī)器學(xué)習(xí)與大數(shù)據(jù)挖掘等等方向的交叉學(xué)科。人工智能是以傳統(tǒng)符號(hào)派
    的頭像 發(fā)表于 01-08 10:57 ?710次閱讀
    <b class='flag-5'>知識(shí)圖</b>譜基礎(chǔ)<b class='flag-5'>知識(shí)</b>應(yīng)用和學(xué)術(shù)前沿趨勢(shì)

    C語(yǔ)言有哪些預(yù)處理操作?

    C語(yǔ)言的預(yù)處理是在編譯之前對(duì)源代碼進(jìn)行處理的階段,它主要由預(yù)處理器完成。預(yù)處理器是一個(gè)獨(dú)立的程序,它負(fù)責(zé)對(duì)源代碼進(jìn)行一些文本替換和處理,生成
    的頭像 發(fā)表于 12-08 15:40 ?472次閱讀
    C語(yǔ)言有哪些<b class='flag-5'>預(yù)處理</b>操作?

    C語(yǔ)言必備知識(shí)編譯預(yù)處理

    編譯預(yù)處理就是在編譯源代碼之前進(jìn)行的一系列處理,將源程序中的一些特殊命令進(jìn)行展開(kāi)或處理,生成擴(kuò)展的源代碼。這些特殊命令通常以“#”開(kāi)頭,占單獨(dú)的行,語(yǔ)句尾部不需要加分號(hào)。
    的頭像 發(fā)表于 12-01 18:27 ?953次閱讀
    C語(yǔ)言必備<b class='flag-5'>知識(shí)</b>編譯<b class='flag-5'>預(yù)處理</b>

    亞控組態(tài)王入門(mén)詳解

    電子發(fā)燒友網(wǎng)站提供《亞控組態(tài)王入門(mén)詳解.pdf》資料免費(fèi)下載
    發(fā)表于 11-16 15:54 ?2次下載
    亞控組態(tài)王<b class='flag-5'>入門(mén)</b><b class='flag-5'>詳解</b>

    基于OpenVINO+OpenCV的OCR處理流程化實(shí)現(xiàn)

    預(yù)處理主要是基于OpenCV、場(chǎng)景文字檢測(cè)與識(shí)別基于OpenVINO框架 + PaddleOCR模型完成。直接按圖索驥即可得到最終結(jié)果。 OpenCV預(yù)處理主要是完成偏斜矯正、背景矯正
    的頭像 發(fā)表于 11-07 11:21 ?616次閱讀
    基于OpenVINO+<b class='flag-5'>OpenCV</b>的OCR<b class='flag-5'>處理</b>流程化實(shí)現(xiàn)

    知識(shí)圖譜與大模型結(jié)合方法概述

    本文作者 |? 黃巍 《Unifying Large Language Models and Knowledge Graphs: A Roadmap》總結(jié)了大語(yǔ)言模型和知識(shí)圖譜融合的三種路線:1
    的頭像 發(fā)表于 10-29 15:50 ?837次閱讀
    <b class='flag-5'>知識(shí)圖</b>譜與大模型結(jié)合方法概述

    OpenCV基礎(chǔ)知識(shí)入門(mén)

    OpenCV是計(jì)算機(jī)視覺(jué)中最受歡迎的庫(kù),最初由intel使用C和C ++進(jìn)行開(kāi)發(fā)的,現(xiàn)在也可以在python中使用。該庫(kù)是一個(gè)跨平臺(tái)的開(kāi)源庫(kù),是免費(fèi)使用的。OpenCV庫(kù)是一個(gè)高度優(yōu)化的庫(kù),主要關(guān)注實(shí)時(shí)應(yīng)用程序。
    的頭像 發(fā)表于 10-29 11:29 ?661次閱讀
    <b class='flag-5'>OpenCV</b>基礎(chǔ)<b class='flag-5'>知識(shí)</b><b class='flag-5'>入門(mén)</b>

    OpenCV 如何加載圖片

    實(shí)現(xiàn)一遍。 OpenCV 的內(nèi)容挺多的,而且不使用的話,容易忘記,所以通過(guò)制造工具的方式來(lái)給自己加深印象,平常要處理圖片的時(shí)候,就可以用自己的工具直接處理,不需要每次都去重復(fù)的寫(xiě)代碼。
    的頭像 發(fā)表于 10-09 15:01 ?602次閱讀