0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(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://wenjunhu.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

    文章

    53

    瀏覽量

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

    關(guān)注

    30

    文章

    4788

    瀏覽量

    68628
  • OpenCV
    +關(guān)注

    關(guān)注

    31

    文章

    635

    瀏覽量

    41355

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

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

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    【AI實(shí)戰(zhàn)項(xiàng)目】基于OpenCV的“顏色識(shí)別項(xiàng)目”完整操作過(guò)程

    OpenCV是一個(gè)廣受歡迎且極為流行的計(jì)算機(jī)視覺(jué)庫(kù),它因其強(qiáng)大的功能、靈活性和開(kāi)源特性而在開(kāi)發(fā)者和研究者中備受青睞。學(xué)習(xí)OpenCV主要就是學(xué)習(xí)里面的計(jì)算機(jī)視覺(jué)算法。要學(xué)習(xí)這些算法的原理,知道它們
    的頭像 發(fā)表于 12-09 16:42 ?316次閱讀
    【AI實(shí)戰(zhàn)項(xiàng)目】基于<b class='flag-5'>OpenCV</b>的“顏色識(shí)別項(xiàng)目”完整<b class='flag-5'>操作</b>過(guò)程

    基于OpenCV的拆分和合并圖像通道實(shí)驗(yàn)案例分享_基于RK3568教學(xué)實(shí)驗(yàn)箱

    一、實(shí)驗(yàn)?zāi)康?本節(jié)視頻的目的是了解圖像通道的概念,學(xué)習(xí)OpenCV的基本操作,并掌握通過(guò)OpenCV實(shí)現(xiàn)拆分和合并圖像通道的方法。 二、實(shí)驗(yàn)原理 拆分與合并圖像 在圖像處理中,一個(gè)彩色圖像通常由多個(gè)
    發(fā)表于 12-03 14:27

    RK3568 + OpenCV 會(huì)碰撞出什么火花?案例詳解:2-1 基于OpenCV的畫(huà)線(xiàn)實(shí)驗(yàn)

    一、實(shí)驗(yàn)?zāi)康?本節(jié)視頻的目的是了解OpenCV的作用并通過(guò)OpenCV實(shí)現(xiàn)畫(huà)線(xiàn)。 二、實(shí)驗(yàn)原理 OpenCV 開(kāi)放源代碼計(jì)算機(jī)視覺(jué)庫(kù) OpenCV(Open source Comput
    發(fā)表于 12-03 14:09

    如何用OpenCV的相機(jī)捕捉視頻進(jìn)行人臉檢測(cè)--基于米爾NXP i.MX93開(kāi)發(fā)板

    功能,首先要進(jìn)行人臉檢測(cè),判斷出圖片中人臉的位置,才能進(jìn)行下一步的操作。 OpenCV人臉檢測(cè)方法 在OpenCV中主要使用了兩種特征(即兩種方法)進(jìn)行人臉檢測(cè),Haar特征和LBP特征。用得最多
    發(fā)表于 11-15 17:58

    【龍芯2K0300蜂鳥(niǎo)板試用】5 搭建opencv開(kāi)發(fā)環(huán)境

    在官方提供的buildroot根文件系統(tǒng)中,不支持opencv庫(kù),故需要自己增加,另外,在本地編譯的時(shí)候,需要在本地(ubuntu)上安裝對(duì)應(yīng)opencv庫(kù),這樣才能將編譯好的鏡像放到板子上跑起來(lái)
    發(fā)表于 08-27 15:08

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

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

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

    opencv的主要功能有哪些

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

    基于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.2w次閱讀

    I.MX6ULL-飛凌 ElfBoard ELF1板卡 - 如何在Ubuntu中編譯OpenCV庫(kù)(X86架構(gòu))

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

    嵌入式學(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ù)貼|如何在Ubuntu中編譯OpenCV庫(kù)

    在之前發(fā)布的文章中探討了交叉編譯OpenCV并部署至嵌入式系統(tǒng)的方法。然而,在調(diào)試階段,我們發(fā)現(xiàn)在Ubuntu環(huán)境下將OpenCV編譯為X86架構(gòu)可能更加方便和高效。通過(guò)在主機(jī)上編譯并使用X86架構(gòu)
    的頭像 發(fā)表于 05-31 16:41 ?1171次閱讀
    ELF 1技術(shù)貼|如何在Ubuntu中編譯<b class='flag-5'>OpenCV</b>庫(kù)

    如何實(shí)現(xiàn)PIL和OpenCV之間圖像數(shù)據(jù)的轉(zhuǎn)換呢?

    PIL圖像數(shù)據(jù)格式轉(zhuǎn)換成OpenCV圖像數(shù)據(jù)格式
    的頭像 發(fā)表于 02-25 13:43 ?1219次閱讀

    【米爾-全志T113-i開(kāi)發(fā)板試用】基礎(chǔ)開(kāi)發(fā)環(huán)境配置和opencv-mobile移植測(cè)試

    opencv源碼,來(lái)最小化編譯的 opencv 庫(kù) 提供了 opencv 常用的功能,如讀寫(xiě)圖片,處理,矩陣操作等等 版本與上游同步,無(wú)第三方依賴(lài) 在絕大多數(shù)情況下,以 1/10 的體
    發(fā)表于 01-23 15:13

    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 ?394次閱讀
    ELF 1技術(shù)貼|如何移植<b class='flag-5'>OpenCV</b>