計算機視覺cv2入門之圖像的讀取,顯示,與保存

????????在計算機視覺領域,Python的cv2庫是一個不可或缺的工具,它提供了豐富的圖像處理功能。作為OpenCV的Python接口,cv2使得圖像處理的實現變得簡單而高效。

?示例圖片


目錄

opencv獲取方式

圖像基本知識

顏色空間

RGB

HSV

圖像格式

BMP格式

? TIFF格式

GIF格式

JPEG格式

PNG格式

讀取圖像cv2.imread()

? imread各flags參數含義詳解

讀取結果說明

Ndarray說明

獲取單通道顏色矩陣

顯示圖像

使用cv2.imshow()顯示圖像

cv2.waitKey()

cv2.destroyAllWindows()

使用plt.imshow()顯示圖像

保存圖像cv2.imwrite()

總結


?opencv獲取方式

pip install -i https://mirrors.tuna.tsinghua.edu.cn/pypi/web/simple opencv-python

圖像基本知識

顏色空間

????????顏色空間是一種用來表示顏色的數學模型,它描述了如何將顏色信息數字化,以便于計算機進行處理和分析。在計算機視覺和圖像處理領域,常見的顏色空間包括RGB、HSV等。

RGB

????????RGB顏色空間是最常用的顏色空間之一,它基于紅(Red)、綠(Green)、藍(Blue)三種基本顏色,通過調整這三種顏色的強度和組合,可以產生各種顏色。

????????在RGB顏色空間中,每個顏色的強度值范圍通常在0到255之間,分別代表紅、綠、藍三種顏色的亮度。通過調整這些亮度值,可以混合出各種顏色。例如,當RGB三個通道的強度值都為0時,表示黑色;當RGB三個通道的強度值都為255時,表示白色。

RGB顏色調色板?

????????HEX是一種常用于網頁設計和圖像處理中的顏色表示方法,它通過六位十六進制數來表示RGB顏色空間中的顏色。在HEX表示法中,前兩位代表紅色強度,中間兩位代表綠色強度,最后兩位代表藍色強度。?

????????通過改變這三個值的不同組合,可以得到一個包含2^24=16777216種顏色的調色板,但是人眼可見的卻遠遠少于這個數字。

????????例如我們總是認為烏鴉是黑色的,但其實在不同的光照條件下,烏鴉的羽毛可能會呈現出彩色的光澤。這正是因為RGB顏色空間雖然能夠表示大量的顏色,但人眼的顏色感知卻受到環境、光照等多種因素的影響。

?烏鴉羽毛五彩斑斕的黑

HSV

????????HSV(Hue, Saturation, Value)是根據顏色的直觀特性 色調(Hue)、飽和度(Saturation)和明度(Value)三個參數。由A. R. Smith在1978年創建的一種顏色空間, 也稱六角錐體模型(Hexcone Model)。

?HSV分量可以通過RGB各分量值轉化得到,計算公式如下:

其中,R,G,B分別為RGB顏色空間中的3個分量。?


圖像格式

常見的圖像格式有BMP格式,TiIFF格式,GIF格式,JPEG格式,PNG格式等。

BMP格式

????????BMP格式是windows環境中的一種標準(但很多Microsoft應用程序不支持它),這種格式采用位映射存儲格式,除了圖像深度可選以外,不采用其他任何壓縮,因此,BMP文件所占用的空間很大。BMP文件的圖像深度可選lbit、4bit、8bit及24bit。BMP文件存儲數據時,圖像的掃描方式是按從左到右、從下到上的順序。由于BMP文件格式是Windows環境中交換與圖有關的數據的一種標準,因此在Windows環境中運行的圖形圖像軟件都支持BMP圖像格式。

? TIFF格式

????????TIFF格式是一種靈活的圖像存儲格式,廣泛應用于印刷、出版和掃描領域。它支持多種色彩模式,包括灰度、RGB、CMYK等,并允許無損壓縮,以在保證圖像質量的同時減少文件大小。TIFF格式還支持多層圖像和透明度,使其在處理復雜圖像時具有顯著優勢。此外,TIFF格式具有良好的兼容性,能夠被多種圖像編輯和處理軟件所支持。

GIF格式

????????GIF格式是一種廣泛用于網絡傳輸的圖像格式。GIF格式以其獨特的無損壓縮技術和支持透明背景的特性而著稱,這使得GIF圖像在保持高質量的同時,文件大小相對較小,非常適合在網絡上快速加載和顯示。此外,GIF格式還支持動畫效果,能夠創建簡單的動態圖像,這一特性使其在社交媒體和網頁設計中備受歡迎。盡管GIF格式的色彩深度有限,通常只能顯示256種顏色,但這并不妨礙它在特定應用場景下的廣泛應用。

JPEG格式

????????JPEG格式源自對相對靜止灰度或彩色圖像的一種壓縮標準,在使用有損壓縮方法時可節省的空間是相當大的,目前數碼相機中均使用這種格式。盡管JPEG格式采用有損壓縮,可能會導致一定的圖像質量損失,但通過調整壓縮級別,用戶可以在圖像質量和文件大小之間找到理想的平衡點。這種靈活性使得JPEG格式成為存儲和傳輸大量圖片的優選方案,尤其是在存儲空間有限或網絡帶寬受限的情況下。此外,JPEG格式還具有良好的跨平臺兼容性,幾乎可以被所有主流的圖像查看器和編輯器所支持。

PNG格式

????????PNG是一種無損壓縮的圖像格式,支持透明背景和Alpha通道,使得圖像在保持高質量的同時,還能展現出更為豐富的層次感和細膩度。與GIF格式相比,PNG格式在色彩深度上不再受限,能夠顯示1600多萬種顏色,這為圖像的色彩表現提供了更廣闊的空間。此外,PNG格式還支持多種圖像編輯功能,如伽瑪校正、文本注釋等,進一步增強了其在圖像處理和編輯領域的實用性。由于其無損壓縮的特性,PNG格式在需要保持圖像原始質量和細節的應用場景中,如網頁設計中的圖標、按鈕等,具有不可替代的優勢。

需要注意的是PNG格式的圖片相對于其他格式圖片來說,除了RGB三通道以外還多了一層alpha通道,這一層alpha通道使得PNG圖片支持透明度設置,即可以實現圖片的半透明效果,或者是摳圖后的圖片背景透明化。


讀取圖像cv2.imread()

#cv2.imread讀取圖像
import cv2
image=cv2.imread(filename='test.jpg',flags=cv2.IMREAD_UNCHANGED)
#filename:圖像文件的路徑
#flags:#cv2.IMREAD_COLOR:BGR格式彩色圖像 #cv2.IMREAD_GRAYSCALE:灰度圖像,是單通道的 #cv2.IMREAD_UNCHANGED:包括alpha通道,即透明通道#cv2.IMREAD_COLOR_BGR,以BGR格式讀取圖像,彩色#cv2.IMREAD_COLOR_RGB,以RGB格式讀取圖像,彩色#cv2.IMREAD_ANYDEPTH:讀取任意深度的圖像#cv2.IMREAD_ANYCOLOR:讀取任意顏色的圖像#cv2.IMREAD_LOAD_GDAL:使用GDAL讀取圖像#cv2.IMREAD_REDUCED_COLOR_2:讀取1/2的彩色圖像#cv2.IMREAD_REDUCED_COLOR_4:讀取1/4的彩色圖像#cv2.IMREAD_REDUCED_COLOR_8:讀取1/8的彩色圖像#cv2.IMREAD_REDUCED_GRAYSCALE_2:讀取1/2的灰度圖像#cv2.IMREAD_REDUCED_GRAYSCALE_4:讀取1/4的灰度圖像#cv2.IMREAD_REDUCED_GRAYSCALE_8:讀取1/8的灰度圖像#cv2.IMREAD_IGNORE_ORIENTATION:忽略圖像的方向信息#cv2.IMREAD_COLOR是默認值,讀取的圖像是彩色BGR格式相當與cv2.IMREAD_COLOR_BGR
print(image.shape)

? cv2.imread()函數各flags參數含義詳解

? ? ? ? ????????cv2.imread()函數只有兩個參數,filename與flages,filename指圖像文件路徑,flags是指定圖像讀取的方式。

以下是所有flags釋義:
? ? ? ? ?

flags
cv2.IMREAD_COLOR讀取彩色圖像
cv2.IMREAD_GRAYSCALE讀取單通道的灰度圖像
cv2.IMREAD_UNCHANGED:按照圖像原格式讀取圖像,若圖像是png圖像那么包括alpha通道,即透明通道,此時圖像是四通道的,若圖像不是png格式那么還是三通道。
?cv2.IMREAD_COLOR_BGR以BGR格式讀取圖像,彩色
?cv2.IMREAD_COLOR_RGB以RGB格式讀取圖像,彩色
cv2.IMREAD_ANYDEPTH讀取任意深度的圖像
?cv2.IMREAD_ANYCOLOR讀取圖像時自動檢測并保留圖像的原始顏色通道數。
cv2.IMREAD_LOAD_GDAL使用GDAL讀取圖像。GDAL 是專門用于處理地理空間數據格式的庫,如 GeoTIFF、ENVI、HFA 等。
cv2.IMREAD_REDUCED_COLOR_2讀取1/2的彩色圖像
cv2.IMREAD_REDUCED_COLOR_4讀取1/4的彩色圖像
?cv2.IMREAD_REDUCED_COLOR_8:讀取1/8的彩色圖像
cv2.IMREAD_REDUCED_GRAYSCALE_2讀取1/2的灰度圖像
cv2.IMREAD_REDUCED_GRAYSCALE_4讀取1/4的灰度圖像
cv2.IMREAD_REDUCED_GRAYSCALE_8讀取1/8的灰度圖像
cv2.IMREAD_IGNORE_ORIENTATION忽略圖像的方向信息

讀取結果說明

Ndarray說明

? ? ? ? ? Ndarray的一般結構為:

[行數,列數,深度]

????????其中行和列都是一維數組,我們知道行*列便可以構成矩陣,而深度則用來表示不同的行*列構成的矩陣的在最外層的數組中的索引。簡而言之,Ndarray就是數組內嵌套矩陣的格式,這樣會十分方便理解。

????????? 上述代碼中的image為讀取結果,由于我們的示例圖片是.jpg格式沒有alpha通道,所以flags使用cv2.IMREAD_UNCHANGED與cv2.IMREAD_COLOR并沒有區別,通道數都為3。

?image的shape:(1161, 1080, 3)

? ? ? ? cv2.imread()函數的結果是ndarray,我們打印出其shape的結果中前兩個參數是圖像的高與寬,第三個參數是image的維度,這里的維度其實就是圖像的RGB通道數。

獲取單通道顏色矩陣

????????倘若我們想要分別切片獲取image的三個通道數對應的顏色矩陣,那么我們可以這樣寫:

blue=image[:,:,0]
green=image[:,:,1]
red=image[:,:,2]
#或者
blue=image[0:1161,0:1080,0]
green=image[0:1161,0:1080,1]
red=image[0:1161,0:1080,2]

? ? ? ? ? ?在第一種寫法中,這里要說明一下的是,Ndarray的切片方法與python的list切片方法一致,切片時有一個特殊用法就是[:],它相當與[0:len(array)]用來直接獲取整個數組所有值,倘若你要是不知道某一維這個數組的長度(比如上邊我們讀取的圖像高1161寬1080,直接切片需[0:1161,0:1080]),又想獲取整個數組的所有內容,可以使用這種方法。

????????當然,為了方便,cv2已經內置了split函數替我們直接獲取三個顏色通道的矩陣。

blue,green,red=cv2.split(image)

顯示圖像

使用cv2.imshow()顯示圖像

import cv2#opencv讀取的格式是BGR
image=cv2.imread('test.jpg')
image=cv2.resize(image,(500,500))#更改一下圖像大小,為了方便顯示
cv2.imshow('image',image)
cv2.waitKey(0)
cv2.destroyAllWindows()

????????這里的image是一個shape為(500,500,3)的ndarray,表示這是一個500x500像素的彩色圖像,具有紅、綠、藍三個顏色通道。每個顏色通道都是一個500x500的二維數組。

結果

cv2.waitKey()

????????cv2.waitKey()函數是用來在OpenCV庫中暫停程序執行并等待用戶按鍵的函數。這個函數通常在顯示圖像時使用,比如在一個窗口中顯示圖像后,我們希望程序在用戶按下任意鍵后再繼續執行后續操作,這時就可以使用cv2.waitKey()函數。該函數接受一個整數參數,表示等待的毫秒數。如果參數為0,則表示無限期等待,直到用戶按下鍵盤上的任意鍵。在按下鍵后,cv2.waitKey()會返回按鍵的ASCII碼值,我們可以根據這個返回值來判斷用戶按下了哪個鍵。

????????需要注意的是,在使用cv2.waitKey()之前,必須已經創建了一個圖像顯示窗口,否則該函數將無法正常工作。

? ? ? ? 同時,倘若你使用cv2.imshow()想要顯示image,但是卻沒有在代碼中加入這一行cv2.waitKey(0)命令,那么圖片將不會正常顯示,顯示結果為黑色背景。

cv2.destroyAllWindows()

? ? ??cv2.destroywindows()函數是用來關閉所有OpenCV創建過的窗口的,這些窗口實際是都是使用python內置庫tkinter編寫的,先前的tkinter窗口會阻塞主線程。所以,當我們完成圖像處理或顯示操作后,經常需要關閉這些窗口以釋放資源。倘若不將他們關閉當前圖像窗口可能無法顯示。

cv2.namedWindow()

????????cv2.namesWindow()函數寫在cv2.imshow()函數之前,它主要用來設置cv2.imshow()函數彈出的窗口的屬性。

比如:我們正常使用cv2.imshow()顯示的圖像的窗口不可拉伸,我們只需要在cv2.imshow()函數之前,加一行以下代碼便可實現窗口可拉伸:

#cv2.namedWindow()函數調整圖像顯示窗口'''
cv2.namedWindow()所有flags:
cv2.WINDOW_AUTOSIZE
cv2.WINDOW_FREERATIO
cv2.WINDOW_FULLSCREEN
cv2.WINDOW_GUI_EXPANDED
cv2.WINDOW_GUI_NORMAL
cv2.WINDOW_KEEPRATIO
cv2.WINDOW_NORMAL
cv2.WINDOW_OPENGL'
'''
import cv2#opencv讀取的格式是BGR
image=cv2.imread('test.jpg')
image=cv2.resize(image,(500,500))
cv2.namedWindow('image',cv2.WINDOW_GUI_NORMAL)
cv2.imshow('image',image)
cv2.waitKey(0)
cv2.destroyAllWindows()

圖像所在窗口可以x,y方向拉伸?

cv2.namedWindow()函數只有兩個參數,winname與flags,winname是待作用的窗口名稱,flags用來設置該窗口的屬性,以下是cv2.namedWindow()函數所有flags及其含義:

cv2.WINDOW_AUTOSIZE

窗口大小會自動調整為與輸入圖像的大小相同,用戶無法手動調整窗口尺寸 。創建窗口后,圖像以原始大小顯示在窗口中,窗口大小隨圖像尺寸變化而自適應

cv2.WINDOW_FREERATIO

窗口中的圖像可以自由縮放,不保持圖像的原始寬高比。這意味著在調整窗口大小時,圖像會按照窗口的變化隨意拉伸或壓縮,可能會導致圖像變形?

cv2.WINDOW_FULLSCREEN

創建一個全屏窗口,窗口將占據整個屏幕,通常需要通過特定的系統操作(如按下特定快捷鍵)來退出全屏模式 。通過waitkey()函數實現

cv2.WINDOW_GUI_EXPANDED

提供擴展的GUI功能,允許更豐富的用戶界面元素和交互方式。這個標志通常用于創建具有更多控件和功能的窗口,不過具體的表現和可用功能可能依賴于OpenCV的版本和底層使用的GUI后端?

cv2.WINDOW_GUI_NORMAL

創建具有標準GUI外觀和功能的窗口,這是最常見的窗口創建模式,提供基本的窗口操作(如關閉按鈕等),沒有額外的擴展功能?

cv2.WINDOW_KEEPRATIO

窗口中的圖像在縮放時會保持其原始的寬高比。當調整窗口大小時,圖像會根據窗口的變化按比例縮放,以確保圖像不會變形?

cv2.WINDOW_NORMAL

允許用戶手動調整窗口的大小與?cv2.WINDOW_AUTOSIZE?不同,此模式下窗口大小不會自動適應圖像大小,用戶可以根據需要改變窗口尺寸,圖像也會相應地進行縮放顯示?

cv2.WINDOW_OPENGL

創建支持OpenGL的窗口,這使得可以在窗口中使用OpenGL的圖形渲染功能,適用于需要高級圖形處理和交互的應用場景?

使用plt.imshow()顯示圖像

import cv2#opencv讀取的格式是BGR
import matplotlib.pyplot as plt#matplotlib讀取的格式是RGB
image=cv2.imread('test.jpg')
image=cv2.resize(image,(500,500))
#使用plt.imshow(),需要先將BGR轉化成RGB,這里使用cv2.cvtColor顏色通道轉換函數完成
image=cv2.cvtColor(image,cv2.COLOR_RGB2BGR)
plt.axis('off')
plt.imshow(image)

結果

????????這里需要注意的是opencv讀取的圖像時默認格式是BGR,而matplotlib讀取的格式是RGB,如果我們在讀取圖像時不指定讀取方式且不使用cv2.cvtColor()通道轉換函數將顏色通道轉換成RGB的話,那么顯示出來的圖像的顏色便會怪怪的。。。

????????這是因為,matplotlib把原本是紅色的通道誤認為是藍色通道,而原本是藍色的通道則被認為是紅色通道。這種顏色通道的錯位就會導致圖像顏色顯示異常、

????????但是,無論如何,cv2.imshow與plt.imshow這兩個函數在顯示圖像時,需要傳入的都是圖像的ndarray數據。

保存圖像cv2.imwrite()

#cv2.imwrite保存圖像
import cv2
image=cv2.imread(filename='test.jpg',flags=cv2.IMREAD_UNCHANGED)
#圖像經過某些變換或操作后需要保存
cv2.imwrite(filename='newImage.jpg',img=image,params=[int(cv2.IMWRITE_JPEG_QUALITY), 50])
#filename:保存圖像文件名稱
#img:圖像顏色矩陣
#params:參數是一個可選的序列(通常是列表或元組),用于傳遞圖像編碼和壓縮相關的參數。

????????當我們需要保存圖像時,直接調用cv2.imwrite()函數即可。?

總結

????????本文主要介紹了opencv圖像的讀取與顯示,后序還將分享更多相關圖像處理技術,以及如何利用cv2進行圖像特征提取和匹配。并且還會將所有內容合并到專欄中,免費訂閱。

????????通過本專欄的學習,讀者將能夠利用cv2庫解決實際的圖像處理問題,為計算機視覺項目打下堅實基礎。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/72161.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/72161.shtml
英文地址,請注明出處:http://en.pswp.cn/web/72161.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

k8s面試題總結(十五)

1.如何使用Kubernetes進行多環境部署(如開發,測試和生產環境)? 使用命名空間(namespaces): 命名空間是用于邏輯隔離和資源分組的一種方式,可以為每個環境創建單獨的命名空間。 2.使…

linux中yum和wget指令的區別

yum 和 wget 都是 Linux 上的下載工具,但它們的用途、下載方式和適用場景不同。以下是它們的 主要區別: 1. yum 是軟件包管理器,wget 是文件下載工具 功能yumwget用途安裝、更新和管理 RPM 軟件包從 HTTP/HTTPS/FTP 下載文件工作方式通過 yu…

性能優化:服務器性能影響網站加載速度分析

問題:網站訪問加載慢是受部署服務器的核數、帶寬、內存影響嗎?? 文章目錄 前言一、服務器核數(CPU)二、帶寬三、內存(RAM)四、其他潛在影響因素五、排查與優化步驟六、總結 前言 網站訪問加載速…

【python】一文掌握 Conda 指令 (anaconda備忘清單)

文章目錄 入門常用基礎命令環境與包管理包與源管理更改環境導出環境配置其它額外提示這是開始使用 conda 命令的快速參考備忘單,初次學習可參考 這里 參考: Anaconda文檔官網命令Cheat sheetConda cheatsheet PDF入門 常用基礎命令 命令說明conda info查看 conda 的一系列基…

Qt:繪圖API

目錄 初識繪圖 繪圖API的使用 繪制形狀(QPaintEvent) 繪制文字(畫筆QPen) 內部填充(畫刷QBrush) 繪制圖片(QPixmap) 初識繪圖 我們前面學習 Qt 主要是學 Qt 的各種控件,本質上都是畫出來的 都是一些常用的東西,Qt 已經提前畫好了,拿過…

【附JS、Python、C++題解】Leetcode面試150題(9)——三數之和

一、題目????? 15. 三數之和 給你一個整數數組 nums ,判斷是否存在三元組 [nums[i], nums[j], nums[k]] 滿足: i!j、i!k 且 j! k ,同時還滿足:nums[i] nums[j] nums[k] 0 。請你返回所有和為 0 且不重復的三元組。 注意…

開源、創新與人才發展:機器人產業的戰略布局與稚暉君成功案例解析

目錄 引言 一、開源:機器人產業的戰略布局 促進技術進步和生態建設 吸引人才和合作伙伴 建立標準和網絡效應 降低研發風險與成本 二、稚暉君:華為"天才少年計劃"的成功典范 深厚的技術積累與動手能力 強烈的探索和創新意識 持續公開…

Android筆記:Android平臺下SVG格式的解析與實踐

在移動應用開發的廣闊天地里,開發者們始終致力于打造視覺效果卓越、適配各類設備屏幕的優質應用。SVG(Scalable Vector Graphics,可縮放矢量圖形)作為基于 XML 的圖形格式,以其鮮明特性,為 Android 開發者提供了實現這一愿景的關鍵路徑。接下來,本文將全方位深入解析在 …

mac本地部署Qwq-32b記錄

導語 昨天看到阿里開源了Qwq-32b,號稱性能可以媲美Deepseek-R1。今天晚上有空就在Mac上折騰了一下,使用ollma進行了部署,效果感覺還不錯,特此記錄。 環境 硬件 型號:Macbook M1 Pro 14寸內存:32G 環境…

blender學習25.3.11

【05-進階篇】Blender咖啡小場景之咖啡杯建模_嗶哩嗶哩_bilibili 杯子 首先做一個圓柱體 循環切割 crtlr 往下拖拽 框住按s往里收 Gz向上點 點擊頂面按插入i,往里收一下,這樣就插入了一個面 插入完成之后選中這個面,按下鍵盤的擠壓E 然后…

數據可信、隱私可控:CESS 如何打造波卡生態數據新基建?

原文:https://messari.io/report/cess-network-a-deep-dive-into-programmable-data-value-infrastructure作者:Messari編譯:OneBlock波卡生態一直以來以其跨鏈互操作性和靈活性吸引了眾多創新項目,尤其是在 DePIN(去中…

Android 列表頁面終極封裝:SmartRefreshLayout + BRVAH 實現下拉刷新和加載更多

在 Android 開發中,列表頁面是常見的 UI 設計模式,而下拉刷新和加載更多是提升用戶體驗的關鍵功能。本文將帶你從零開始,封裝一個高復用性的 SmartRefreshHelper 工具類,結合 SmartRefreshLayout 和 BRVAH,實現高效、靈…

css基本功

為什么 ::first-letter 是偽元素&#xff1f; ::first-letter 的作用是選擇并樣式化元素的第一個字母&#xff0c;它創建了一個虛擬的元素來包裹這個字母&#xff0c;因此屬于偽元素。 grid布局 案例一 <!DOCTYPE html> <html lang"zh-CN"><head&…

基于WebRTC技術的EasyRTC嵌入式音視頻SDK:多平臺兼容與性能優化

在當今數字化、智能化的時代背景下&#xff0c;實時音視頻通信技術已成為眾多領域不可或缺的關鍵技術。基于WebRTC技術的EasyRTC嵌入式音視頻SDK&#xff0c;憑借其在ARM、Linux、Windows、安卓、iOS等多平臺上的兼容性&#xff0c;為開發者提供了強大的工具&#xff0c;推動了…

【Pandas】pandas Series last_valid_index

Pandas2.2 Series Time Series-related 方法描述Series.asfreq(freq[, method, how, …])用于將時間序列數據轉換為指定的頻率Series.asof(where[, subset])用于返回時間序列中指定索引位置的最近一個非缺失值Series.shift([periods, freq, axis, …])用于將時間序列數據沿指…

批量將 Excel 文檔中的圖片提取到文件夾

前面我們介紹過如何批量刪除 Excel 文檔中的所有圖片或者指定的圖片&#xff0c;其中就需要用到批量提取 Excel 文檔中圖片的操作。我們如何才能夠將 Excel 文檔中的圖片快速的提取出來呢&#xff1f;其實單個 Excel 文檔中的圖片提取到文件夾中是有多種方法可以完成的&#xf…

【氮化鎵】開態GaN HEMTs中氧誘導Vth漂移的缺陷演化

2019年,中國工程物理研究院電子工程研究所的Rong Wang等人基于實驗研究和第一性原理計算,研究了開啟態偏置下AlGaN/GaN高電子遷移率晶體管(HEMTs)中氧誘導的閾值電壓(Vth)漂移的缺陷演化機理。實驗結果表明,在開啟態應力作用下,T型柵AlGaN/GaN HEMT的Vth發生了明顯的負…

谷粒商城:性能壓測JVM堆區

目錄 Kit Apache JMeter VisualVM 堆內存 jvm內存模型 垃圾回收&#xff08;Garbage Collection, GC&#xff09; 新對象分配內存 GC步驟 MinorGC 性能優化 影響因素 優化 nginx動靜分離 優化三級分類獲取 Jvm參數配置堆區 測試 Kit Apache JMeter 壓力測試&…

STM32全系大閱兵(2)

接前一篇文章:STM32全系大閱兵(1) 本文內容參考: STM32家族系列的區別_stm32各個系列區別-CSDN博客 STM32--STM32 微控制器詳解-CSDN博客

7、基于osg引擎實現讀取vtk數據通過著色器實現簡單體渲染(1)

1、頂點著色器代碼 #version 110 /* GLSL 1.10需要顯式聲明精度 (OpenGL ES要求) */ #ifdef GL_ES precision highp float; #endif // 體數據采樣步長 uniform float xStepSize,yStepSize,zStepSize; // 體數據紋理和顏色紋理 uniform sampler3D baseTexture; uniform sample…