今天這一篇文章主要記錄一下OpenCV中一些基本的操作,包括讀取圖片,視頻以及反轉(zhuǎn)圖像的幾種操作:
一:圖片的載入
圖片載入很常用,很實用。。。
二:讀取視頻
讀取視頻分為從攝像頭中讀入和從硬盤中讀入,如果是攝像頭就在videocapture函數(shù)中填寫數(shù)值,0是默認的第一個攝像頭,1.是第二個,以此類推,如果沒有外置攝像頭,就直接“”填寫路徑就行。
三:打印圖片的類型
圖片的信息主要包括圖片的類型,圖片的尺寸,圖片的長寬高以及通道數(shù),如果是彩色圖片通道數(shù)就是3,如果是黑白的圖片通道數(shù)為1。
我這里定義了一個函數(shù)來輸出圖片的信息:
這里可以看到:
圖片的大小是589*646的彩色3通道圖片,編碼方式是uint8.
四:圖像的對比度轉(zhuǎn)換
我們知道圖像的像素數(shù)是從0-255,如果實現(xiàn)圖像的反轉(zhuǎn)只需要遍歷每個像素然后每個像素減去255即可,這里用一個笨方法實現(xiàn)以下:
得出的結(jié)果是這樣:
似乎轉(zhuǎn)換了以后的圖片還挺好看的。
當然,這樣的方法太過于復(fù)雜,并且執(zhí)行時間,效率都很低:
用時長達4555毫秒。。。
這時候我們使用OpenCV自帶的bitwise_not函數(shù):
因為底層是使用的C++語言進行封裝,所以執(zhí)行快得多,來對比下:
同樣的一張圖只需要17ms,舒服多了。
五:時間消耗的計算
上圖中的測試時間的計算用到了兩個函數(shù):
GetTickcount函數(shù):它返回從操作系統(tǒng)啟動到當前所經(jīng)歷的計時周期數(shù)
GetTickFrequency函數(shù):返回每秒的計時周期數(shù)
使用的方法:
t1 = cv.getTickCount()
#你需要的測試的函數(shù)或代碼
t2 = cv.getTickCount()
time = (t2-t1)/cv.getTickFrequency()
print("time:%s ms"%(time*1000))
最后,附上完整代碼,方便大家復(fù)現(xiàn),下一篇文章就要開始學(xué)習(xí)圖像色彩空間的轉(zhuǎn)換,還需努力。如果有任何問題歡迎在底下評論,我們一起交流,一起加油!
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)) #遍歷每一個像素點,太慢了,更新 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 #對通道進行賦值,0是藍通道,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()#測試時間消耗time = (t2-t1)/cv.getTickFrequency()print("time:%s ms"%(time*1000))cv.waitKey(0)cv.destroyAllWindows()
責任編輯:xj
原文標題:【CV學(xué)習(xí)筆記】OpenCV基本操作
文章出處:【微信公眾號:深度學(xué)習(xí)自然語言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
-
CV
+關(guān)注
關(guān)注
0文章
53瀏覽量
17016 -
代碼
+關(guān)注
關(guān)注
30文章
4878瀏覽量
69970 -
OpenCV
+關(guān)注
關(guān)注
31文章
641瀏覽量
42222
原文標題:【CV學(xué)習(xí)筆記】OpenCV基本操作
文章出處:【微信號:zenRRan,微信公眾號:深度學(xué)習(xí)自然語言處理】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
為LSDK構(gòu)建opencv時遇到的問題求解
使用OpenCV保存從攝像頭捕獲的視頻時更改顏色輸出視頻收到警告怎么解決?
【AI實戰(zhàn)項目】基于OpenCV的“顏色識別項目”完整操作過程

基于OpenCV的拆分和合并圖像通道實驗案例分享_基于RK3568教學(xué)實驗箱
RK3568 + OpenCV 會碰撞出什么火花?案例詳解:2-1 基于OpenCV的畫線實驗
如何用OpenCV的相機捕捉視頻進行人臉檢測--基于米爾NXP i.MX93開發(fā)板
【龍芯2K0300蜂鳥板試用】5 搭建opencv開發(fā)環(huán)境
OpenCV圖像識別C++代碼
opencv圖像識別有什么算法
opencv-python和opencv一樣嗎
opencv的主要功能有哪些
基于OpenCV的人臉識別系統(tǒng)設(shè)計
I.MX6ULL-飛凌 ElfBoard ELF1板卡 - 如何在Ubuntu中編譯OpenCV庫(X86架構(gòu))
嵌入式學(xué)習(xí)-飛凌ElfBoard ELF 1板卡 - 如何在Ubuntu中編譯OpenCV庫
ELF 1技術(shù)貼|如何在Ubuntu中編譯OpenCV庫

評論