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的基本操作

深度學(xué)習(xí)自然語(yǔ)言處理 ? 來(lái)源:深度學(xué)習(xí)自然語(yǔ)言處理 ? 作者:云時(shí)之間 ? 2020-11-02 15:04 ? 次閱讀

今天這一篇文章主要記錄一下OpenCV中一些基本的操作,包括讀取圖片,視頻以及反轉(zhuǎn)圖像的幾種操作:

一:圖片的載入

圖片載入很常用,很實(shí)用。。。

二:讀取視頻

讀取視頻分為從攝像頭中讀入和從硬盤(pán)中讀入,如果是攝像頭就在videocapture函數(shù)中填寫(xiě)數(shù)值,0是默認(rèn)的第一個(gè)攝像頭,1.是第二個(gè),以此類(lèi)推,如果沒(méi)有外置攝像頭,就直接“”填寫(xiě)路徑就行。

三:打印圖片的類(lèi)型

圖片的信息主要包括圖片的類(lèi)型,圖片的尺寸,圖片的長(zhǎng)寬高以及通道數(shù),如果是彩色圖片通道數(shù)就是3,如果是黑白的圖片通道數(shù)為1。

我這里定義了一個(gè)函數(shù)來(lái)輸出圖片的信息:

這里可以看到:

圖片的大小是589*646的彩色3通道圖片,編碼方式是uint8.

四:圖像的對(duì)比度轉(zhuǎn)換

我們知道圖像的像素?cái)?shù)是從0-255,如果實(shí)現(xiàn)圖像的反轉(zhuǎn)只需要遍歷每個(gè)像素然后每個(gè)像素減去255即可,這里用一個(gè)笨方法實(shí)現(xiàn)以下:

得出的結(jié)果是這樣:

似乎轉(zhuǎn)換了以后的圖片還挺好看的。

當(dāng)然,這樣的方法太過(guò)于復(fù)雜,并且執(zhí)行時(shí)間,效率都很低:

用時(shí)長(zhǎng)達(dá)4555毫秒。。。

這時(shí)候我們使用OpenCV自帶的bitwise_not函數(shù):

因?yàn)榈讓邮鞘褂玫?a href="http://www.ttokpm.com/tags/C++/" target="_blank">C++語(yǔ)言進(jìn)行封裝,所以執(zhí)行快得多,來(lái)對(duì)比下:

同樣的一張圖只需要17ms,舒服多了。

五:時(shí)間消耗的計(jì)算

上圖中的測(cè)試時(shí)間的計(jì)算用到了兩個(gè)函數(shù):

GetTickcount函數(shù):它返回從操作系統(tǒng)啟動(dòng)到當(dāng)前所經(jīng)歷的計(jì)時(shí)周期數(shù)

GetTickFrequency函數(shù):返回每秒的計(jì)時(shí)周期數(shù)

使用的方法:

t1 = cv.getTickCount()

#你需要的測(cè)試的函數(shù)或代碼

t2 = cv.getTickCount()

time = (t2-t1)/cv.getTickFrequency()
print("time:%s ms"%(time*1000))

最后,附上完整代碼,方便大家復(fù)現(xiàn),下一篇文章就要開(kāi)始學(xué)習(xí)圖像色彩空間的轉(zhuǎn)換,還需努力。如果有任何問(wèn)題歡迎在底下評(píng)論,我們一起交流,一起加油!

import cv2 as cvimport numpy as np def access_pixel(image):#屬性的讀取 print(image.shape) height = image.shape[0] width = image.shape[1] channels = image.shape[2] print("width: %s, height: %s, channels: %s"%(width,height,channels)) #遍歷每一個(gè)像素點(diǎn),太慢了,更新 for row in range(height): for col in range(width): for c in range(channels): pv = image[row,col,c] image[row,col,c] = 255-pv cv.imshow("numpy_test",image) def inverse(img): dis = cv.bitwise_not(img) cv.imshow("inverse",dis) def create_image(): ''' img = np.zeros([400,400,4],np.uint8) img[ :, :,0] = np.ones([400,400])*255 #對(duì)通道進(jìn)行賦值,0是藍(lán)通道,1是綠通道,2是紅色通道,多通道 cv.imshow("new_image",img) ''' #初始化灰度圖像 img2 = np.zeros([400,400,1],np.uint8) img2[:,:,0] = np.ones([400,400])*127 #img2 = img2*127 cv.imshow("new_image_2",img2) #維度變換 m1 = np.ones([3,3],np.uint8) m1.fill(12222.388) print(m1) m2 = m1.reshape([1,9]) print(m2) print("---------HELLO-----PYTHON--------------------")src = cv.imread("D:/1.png")cv.namedWindow("input image",cv.WINDOW_AUTOSIZE)cv.imshow("input image",src)t1 = cv.getTickCount()#access_pixel(src)#create_image()inverse(src)t2 = cv.getTickCount()#測(cè)試時(shí)間消耗time = (t2-t1)/cv.getTickFrequency()print("time:%s ms"%(time*1000))cv.waitKey(0)cv.destroyAllWindows()

責(zé)任編輯:xj

原文標(biāo)題:【CV學(xué)習(xí)筆記】OpenCV基本操作

文章出處:【微信公眾號(hào):深度學(xué)習(xí)自然語(yǔ)言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

聲明:本文內(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)投訴
  • CV
    CV
    +關(guān)注

    關(guān)注

    0

    文章

    51

    瀏覽量

    16793
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4671

    瀏覽量

    67774
  • OpenCV
    +關(guān)注

    關(guān)注

    29

    文章

    622

    瀏覽量

    41091

原文標(biāo)題:【CV學(xué)習(xí)筆記】OpenCV基本操作

文章出處:【微信號(hào):zenRRan,微信公眾號(hào):深度學(xué)習(xí)自然語(yǔ)言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    OpenCV圖像識(shí)別C++代碼

    安裝OpenCV庫(kù) 首先,您需要在您的計(jì)算機(jī)上安裝OpenCV庫(kù)。您可以從OpenCV官網(wǎng)下載預(yù)編譯的庫(kù)或從源代碼編譯。安裝完成后,確保將OpenCV的頭文件和庫(kù)文件添加到您的項(xiàng)目中。
    的頭像 發(fā)表于 07-16 10:42 ?1103次閱讀

    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 ?449次閱讀

    opencv的主要功能有哪些

    OpenCV提供了豐富的圖像處理功能,包括圖像的讀取、顯示、保存、轉(zhuǎn)換等。此外,OpenCV還支持圖像的濾波、邊緣檢測(cè)、形態(tài)學(xué)操作、圖像金字塔等高級(jí)圖像處理技術(shù)。 特征檢測(cè)與描述:OpenC
    的頭像 發(fā)表于 07-16 10:35 ?803次閱讀

    基于OpenCV的人臉識(shí)別系統(tǒng)設(shè)計(jì)

    基于OpenCV的人臉識(shí)別系統(tǒng)是一個(gè)復(fù)雜但功能強(qiáng)大的系統(tǒng),廣泛應(yīng)用于安全監(jiān)控、人機(jī)交互、智能家居等多個(gè)領(lǐng)域。下面將詳細(xì)介紹基于OpenCV的人臉識(shí)別系統(tǒng)的基本原理、實(shí)現(xiàn)步驟,并附上具體的代碼示例。
    的頭像 發(fā)表于 07-11 15:37 ?1.1w次閱讀

    嵌入式學(xué)習(xí)-飛凌ElfBoard ELF 1板卡 - 如何在Ubuntu中編譯OpenCV庫(kù)

    在之前發(fā)布的文章中探討了交叉編譯OpenCV并部署至嵌入式系統(tǒng)的方法。然而,在調(diào)試階段,我們發(fā)現(xiàn)在 Ubuntu 環(huán)境下將 OpenCV 編譯為 X86 架構(gòu)可能更加方便和高效。 通過(guò)在主機(jī)上編譯并
    發(fā)表于 06-07 09:21

    ELF 1技術(shù)貼|如何移植OpenCV

    OpenCV是一個(gè)基于BSD許可(開(kāi)源)發(fā)行的計(jì)算機(jī)視覺(jué)庫(kù),廣泛應(yīng)用于跨平臺(tái)環(huán)境,包括Linux、Windows、Android及MacOS操作系統(tǒng)。作為計(jì)算機(jī)視覺(jué)領(lǐng)域廣受歡迎的標(biāo)準(zhǔn)工具包
    的頭像 發(fā)表于 01-09 13:55 ?289次閱讀
    ELF 1技術(shù)貼|如何移植<b class='flag-5'>OpenCV</b>

    OpenCV4.8 CUDA編程代碼教程

    OpenCV4支持通過(guò)GPU實(shí)現(xiàn)CUDA加速執(zhí)行,實(shí)現(xiàn)對(duì)OpenCV圖像處理程序的加速運(yùn)行,當(dāng)前支持加速的模塊包括如下。
    的頭像 發(fā)表于 12-05 09:56 ?845次閱讀
    <b class='flag-5'>OpenCV</b>4.8 CUDA編程代碼教程

    OpenCV對(duì)openEuler提供上游原生支持

    2023年11月17日,OpenCV社區(qū)正式接納openEuler作為持續(xù)集成(Continuous Integration,CI)系統(tǒng)的操作系統(tǒng)之一,對(duì)openEuler提供上游原生支持
    的頭像 發(fā)表于 11-20 09:14 ?683次閱讀

    OpenCV實(shí)驗(yàn)大師平臺(tái)安裝指南

    工程與技術(shù)培訓(xùn)得痛點(diǎn)深深教育了我,讓我知道“工欲善其事必先利其器”。通過(guò)一年多得努力開(kāi)發(fā)與不斷打磨,一款能夠提升OpenCV教學(xué)質(zhì)量與OpenCV工程化開(kāi)發(fā)質(zhì)量與速度的工具軟件成功出現(xiàn)了。它就
    的頭像 發(fā)表于 11-13 11:43 ?733次閱讀
    <b class='flag-5'>OpenCV</b>實(shí)驗(yàn)大師平臺(tái)安裝指南

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

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

    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ǔ)知識(shí)入門(mén)

    Ubuntu系統(tǒng)下編譯OpenCV4.8源碼記錄

    Jetson開(kāi)發(fā)板上編譯OpenCV源碼與編譯運(yùn)行OpenCV C++應(yīng)用程序。我現(xiàn)在還有一塊Alxboard開(kāi)發(fā)板是英特爾家族的,安裝的是操作系統(tǒng)是Ubuntu20的系統(tǒng),本身沒(méi)有自帶Ope
    的頭像 發(fā)表于 10-27 16:07 ?1366次閱讀
    Ubuntu系統(tǒng)下編譯<b class='flag-5'>OpenCV</b>4.8源碼記錄

    openCV的庫(kù)自帶了模板匹配算法嗎?

    openCV的庫(kù)自帶了模板匹配算法嗎
    發(fā)表于 10-10 06:48

    openCV邊緣檢測(cè)原理是什么?

    openCV是通過(guò)什么原理來(lái)實(shí)現(xiàn)邊緣檢測(cè)的
    發(fā)表于 10-10 06:21

    OpenCV 如何加載圖片

    之前也寫(xiě)過(guò)一些 OpenCV 的文章,最近正好在考慮 寫(xiě)一個(gè) OpenCV相關(guān)的工具,目前還是在開(kāi)發(fā)過(guò)程中,邊開(kāi)發(fā)邊更新。預(yù)計(jì)會(huì)持續(xù)一段時(shí)間。目前的想法是把 OpenCV 的 API 在這個(gè)工具上都
    的頭像 發(fā)表于 10-09 15:01 ?605次閱讀