如何利用OpenCV讀取,顯示以及寫入圖片?

      網友投稿 1124 2022-05-28

      簡 介:

      本文中,你了解了: imread(), imshow()以及imwrite()等函數用于圖像的讀取、顯示和保存; waitKey(), destroyAllWindows()函數用于:對于waitKey()函數建議你多做些實驗,因為它的某些特性比較容易讓人搞混淆。 你對它越熟悉,你就能夠更好的掌握它。對于文中的代碼你可以拷貝粘貼下來進行實驗。

      關鍵詞:

      OpenCV,Image,imread,imwrite

      前 言

      目 錄

      Contents

      讀取圖像

      顯示圖像

      圖像寫入

      總 結

      前 言

      目 錄

      Contents

      讀取圖像

      顯示圖像

      圖像寫入

      總 結

      本文來自于Read, Display and Write an Image using OpenCV ,對于應用OpenCV完成圖片的讀取、顯示和寫入。

      對于圖片讀取、顯示和寫入文件是圖像處理和計算機視覺最基本的操作過程。甚至在對于圖片進行截取、縮放、旋轉以及利用各種濾波器進行處理,你所要做的第一件事情就是從文件中將圖片讀取到計算機內存。所以掌握這項基本的操作非常重要。

      OpenCV,作為世界上最大的計算機視覺庫,利用內置的三個函數來完成這些操作。它們分別是:

      1. imread() 讀取圖像;

      2. imshow() 顯示圖像;

      3. imwrite() 將圖像寫入文件;

      下面是本文所使用的樣例圖片。

      首先,下面的代碼讀取上述文件,并進行顯示。查看代碼是如何包含上述三條函數的。繼續往下處理我們將對應用在代碼中的每個函數進行討論。

      # import the cv2 library import cv2 # The function cv2.imread() is used to read an image. img_grayscale = cv2.imread('test.jpg',0) # The function cv2.imshow() is used to display an image in a window. cv2.imshow('graycsale image',img_grayscale) # waitKey() waits for a key press to close the window and 0 specifies indefinite loop cv2.waitKey(0) # cv2.destroyAllWindows() simply destroys all the windows we created. cv2.destroyAllWindows() # The function cv2.imwrite() is used to write an image. cv2.imwrite('grayscale.jpg',img_grayscale)

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      11

      12

      13

      14

      15

      16

      17

      取圖片,應用OpenCV中的imread()函數。下面函數調用語法:

      imread(filename, flags)

      1

      它需要了兩個參數:

      1. 第一個參數為圖像文件名稱,需要文件的全路徑名稱。

      2. 第二個參數說明圖片如何表示。OpenCV提供了幾個對于圖片數據表示的方式,下面三個是最常用的:

      * cv2.IMREAD_UNCHANGED or -1

      * cv2.IMREAD_GRAYSCALE or 0

      * cv2.IMREAD_COLOR or 1

      函數缺省的flags的參數為1,也就是將讀取的圖片表示成彩色圖像。你可以使用不同的flags參數來將讀取的圖片數據表示成特殊的格式。下面我們測試一下不同的 flags選項所產生的效果。

      如何利用OpenCV讀取,顯示以及寫入圖片?

      在這里需要強調一下,OpenCV表示彩色圖片使用的為BGR格式,而大多數其他計算機視覺庫則使用的RGB格式表示。所以在使用OpenCV配合替他工具包使用的時候,不要忘記將藍色與紅色通道進行交換,這樣才能夠切換到其它圖像處理庫。

      下面的代碼中,我們首先讀取了測試圖像,測試上面三種flags選項E對應的情況。

      # Read an image img_color = cv2.imread('test.jpg',cv2.IMREAD_COLOR) img_grayscale = cv2.imread('test.jpg',cv2.IMREAD_GRAYSCALE) img_unchanged = cv2.imread('test.jpg',cv2.IMREAD_UNCHANGED)

      1

      2

      3

      4

      或者

      img_color = cv2.imread('test.jpg',1) img_grayscale = cv2.imread('test.jpg',0) img_unchanged = cv2.imread('test.jpg',-1)

      1

      2

      3

      OpenCV中,使用imshow()函數來顯示圖像。調用語法為:

      imshow(window_name, image)

      1

      這個函數也需要兩個參數:

      1. 第一個參數是顯示圖片窗口的名稱;

      2. 第二個參數就是需要顯示的圖片數據;

      如果顯示多個圖片,你需要為每個圖片顯示的窗口指定新的窗口名稱。

      函數 imshow()通常與 waitKey()、distroyAllWindow()/distroyWindow() 函數聯合使用。

      函數 waitKey() 用于綁定鍵盤:

      它帶有一個數字參數,指明窗口顯示的時間(單位ms);

      在等待時間內,用戶輸入任何字符,程序將會立即往下進行;

      如果等待參數為0,程序將會無限期等待用戶的輸入字符;

      你也可以設定該函數檢測特殊的按鍵操作,比如Q鍵,或者 ESC鍵。然后顯示每個案件特殊的行為;

      函數 distroyAllWindows() 將所有顯示圖片所創建的窗口關閉。如果想關閉某個窗口,則需要將該窗口的名稱指定。使用 distroyAllWindows() 也將窗口和圖片從計算機內存清除。下面的代碼演示了函數 imshow()的是如何被用于顯示你讀入的圖片的。

      #Displays image inside a window cv2.imshow('color image',img_color) cv2.imshow('grayscale image',img_grayscale) cv2.imshow('unchanged image',img_unchanged) # Waits for a keystroke cv2.waitKey(0) # Destroys all the windows created cv2.destroyAllwindows()

      1

      2

      3

      4

      5

      6

      7

      8

      9

      10

      下面動圖顯示了整個對于圖片的讀入、顯示、關閉顯示窗口的整個過程。

      在下面三個輸出屏幕中,你可以看到:

      1. 第一個圖片顯示為彩色;

      2. 接下來是灰度圖片;

      3. 第三個是圖片的原始格式,在讀取的時候使用參數: cv2.IMREAD_UNCHANGED

      下面的動圖顯示了在讀取、顯示圖片過程中沒有應用waitKey()函數。用于圖片顯示的窗口在幾個毫秒內就關閉了,所以在屏幕上并沒有留下圖片窗口。

      后,我們來討論一下如何把一個圖像寫入、保存在文件目錄中。所使用的函數為 imwrite(),它的語法為:

      imwrite(filename, image)

      1

      1. 第一個參數為文件名稱,這個文件名稱必須包含文件的擴展名,比如 .png,.jpg 等等。OpenCV就是根據文件名稱的擴展名來確定保存文件的格式的。

      2. 第二個參數就是你所要保存的圖像數據。 如果圖片成功保存在目錄中的文件,函數返回True。

      下面的代碼顯示了保存的過程,這個存盤的過程是很簡單的。只是將帶有正確擴展名稱的文件名輸入正確(帶有想要保存路徑名稱),并且將圖像數據變量輸入,你就完成了圖片的存儲。

      cv2.imwrite('grayscale.jpg',img_grayscale)

      1

      文中,你了解了:

      imread(), imshow()以及imwrite()等函數用于圖像的讀取、顯示和保存;

      waitKey(), destroyAllWindows()函數用于:

      在鍵盤操作之后關閉顯示圖像的窗口;

      將圖像數據和窗口從內存清除。

      對于waitKey()函數建議你多做些實驗,因為它的某些特性比較容易讓人搞混淆。 你對它越熟悉,你就能夠更好的掌握它。對于文中的代碼你可以拷貝粘貼下來進行實驗。

      ■ 相關文獻鏈接:

      Read, Display and Write an Image using OpenCV

      ● 相關圖表鏈接:

      圖1.1 本文所使用的樣例圖片

      圖2.1 讀入、顯示、關閉圖片窗口

      圖2.2 使用imshow()顯示圖片

      圖2.3 使用imshow()顯示的灰度圖片

      圖2.4 讀取圖片是使用的參數 cv2.IMREAD_UNCHANGED

      圖2.5 在顯示圖片的過程中沒有應用waitKey() 函數

      OpenCV

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:linux第一課:基礎概念
      下一篇:Linux運維面試題-筆試題02
      相關文章
      国产午夜亚洲精品国产成人小说| 久久精品国产亚洲av麻豆图片| 亚洲国产成人久久三区| 亚洲中文字幕久久精品无码喷水| 中国亚洲呦女专区| 亚洲午夜电影在线观看| 亚洲喷奶水中文字幕电影| 亚洲日本乱码一区二区在线二产线| 亚洲视频在线观看免费| 91亚洲精品视频| 亚洲欧洲日韩在线电影| 亚洲国产成a人v在线观看| 中文字幕在线观看亚洲日韩| 亚洲精华国产精华精华液| 亚洲GV天堂无码男同在线观看| 激情婷婷成人亚洲综合| 天堂亚洲免费视频| 亚洲精品成人区在线观看| 亚洲片国产一区一级在线观看 | 亚洲综合国产精品第一页| 亚洲国产成人精品无码久久久久久综合| 国产AV日韩A∨亚洲AV电影 | 五月婷婷亚洲综合| 亚洲午夜日韩高清一区| 亚洲欧洲美洲无码精品VA| 亚洲处破女AV日韩精品| 老色鬼久久亚洲AV综合| 亚洲成av人片在线看片| 亚洲 日韩经典 中文字幕| 亚洲国产成人无码AV在线| 国产成人+综合亚洲+天堂| 久久青青草原亚洲av无码| 亚洲AV无码乱码在线观看| 亚洲国产一级在线观看| 亚洲线精品一区二区三区| 亚洲另类激情综合偷自拍| 亚洲综合男人的天堂色婷婷| 亚洲精品第一国产综合精品| 色噜噜亚洲男人的天堂| 国产精品观看在线亚洲人成网| 国产亚洲精品自在线观看|