今天這一篇文章主要記錄一下OpenCV中一些基本的操作,包括讀取圖片,視頻以及反轉圖像的幾種操作:
一:圖片的載入
圖片載入很常用,很實用。。。
二:讀取視頻
讀取視頻分為從攝像頭中讀入和從硬盤中讀入,如果是攝像頭就在videocapture函數中填寫數值,0是默認的第一個攝像頭,1.是第二個,以此類推,如果沒有外置攝像頭,就直接“”填寫路徑就行。
三:打印圖片的類型
圖片的信息主要包括圖片的類型,圖片的尺寸,圖片的長寬高以及通道數,如果是彩色圖片通道數就是3,如果是黑白的圖片通道數為1。
我這里定義了一個函數來輸出圖片的信息:
這里可以看到:
圖片的大小是589*646的彩色3通道圖片,編碼方式是uint8.
四:圖像的對比度轉換
我們知道圖像的像素數是從0-255,如果實現圖像的反轉只需要遍歷每個像素然后每個像素減去255即可,這里用一個笨方法實現以下:
得出的結果是這樣:
似乎轉換了以后的圖片還挺好看的。
當然,這樣的方法太過于復雜,并且執行時間,效率都很低:
用時長達4555毫秒。。。
這時候我們使用OpenCV自帶的bitwise_not函數:
因為底層是使用的C++語言進行封裝,所以執行快得多,來對比下:
同樣的一張圖只需要17ms,舒服多了。
五:時間消耗的計算
上圖中的測試時間的計算用到了兩個函數:
GetTickcount函數:它返回從操作系統啟動到當前所經歷的計時周期數
GetTickFrequency函數:返回每秒的計時周期數
使用的方法:
t1 = cv.getTickCount()
#你需要的測試的函數或代碼
t2 = cv.getTickCount()
time = (t2-t1)/cv.getTickFrequency()
print("time:%s ms"%(time*1000))
最后,附上完整代碼,方便大家復現,下一篇文章就要開始學習圖像色彩空間的轉換,還需努力。如果有任何問題歡迎在底下評論,我們一起交流,一起加油!
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學習筆記】OpenCV基本操作
文章出處:【微信公眾號:深度學習自然語言處理】歡迎添加關注!文章轉載請注明出處。
-
CV
+關注
關注
0文章
53瀏覽量
17145 -
代碼
+關注
關注
30文章
4900瀏覽量
70723 -
OpenCV
+關注
關注
32文章
642瀏覽量
42878
原文標題:【CV學習筆記】OpenCV基本操作
文章出處:【微信號:zenRRan,微信公眾號:深度學習自然語言處理】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
【Milk-V Duo S 開發板免費體驗】SDK編譯、人臉檢測、OpenCV測試
編譯opencv_camera_test找不到opencv.hpp怎么解決?
如何用OpenCV的相機捕捉視頻進行人臉檢測--基于米爾NXP i.MX93開發板

OpenCV行人檢測應用方案--基于米爾全志T527開發板

為LSDK構建opencv時遇到的問題求解
使用OpenCV保存從攝像頭捕獲的視頻時更改顏色輸出視頻收到警告怎么解決?
AI模型部署邊緣設備的奇妙之旅:如何在邊緣端部署OpenCV
如何用OpenCV進行手勢識別--基于米爾全志T527開發板

【AI實戰項目】基于OpenCV的“顏色識別項目”完整操作過程

基于OpenCV的拆分和合并圖像通道實驗案例分享_基于RK3568教學實驗箱
RK3568 + OpenCV 會碰撞出什么火花?案例詳解:2-1 基于OpenCV的畫線實驗
如何用OpenCV的相機捕捉視頻進行人臉檢測--基于米爾NXP i.MX93開發板
基于OPENCV的相機捕捉視頻進行人臉檢測--米爾NXP i.MX93開發板

評論