0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

OpenCV 如何加載圖片

科技綠洲 ? 來源:Java技術(shù)指北 ? 作者:Java技術(shù)指北 ? 2023-10-09 15:01 ? 次閱讀

之前也寫過一些 OpenCV 的文章,最近正好在考慮 寫一個 OpenCV相關(guān)的工具,目前還是在開發(fā)過程中,邊開發(fā)邊更新。預計會持續(xù)一段時間。目前的想法是把 OpenCV 的 API 在這個工具上都實現(xiàn)一遍。

OpenCV 的內(nèi)容挺多的,而且不使用的話,容易忘記,所以通過制造工具的方式來給自己加深印象,平常要處理圖片的時候,就可以用自己的工具直接處理,不需要每次都去重復的寫代碼。

今天我們就來看看,學習 OpenCV 如何加載圖片,顯示并保存圖片。大部分人可能都知道我們平常使用的圖片都是使用RGB表示的,但是 OpenCV 中圖片顏色的通道順序稍微有些不同,它是 B - G - R 的通道順序保存的。平常所說的灰度圖是就只有一個通道。

目標

我們來看看今天是目標是什么?

  • 加載圖片,顯示圖片,保存圖片
  • OpenCV中對應的函數(shù)是 Cv2.ImRead() , Cv2.ImShow(), Cv2.ImWrite()

加載圖片

使用 Cv2.ImRead() 來讀入一張圖片:

Mat sourceImage = Cv2.ImRead(filePath, ImreadModes.Unchanged);

// 定義
public Mat ImRead(string fileName, ImreadModes flags = ImreadModes.Color)
  • 參數(shù)1:圖片的文件名
    • 如果圖片放在當前文件夾下,直接寫文件名就行,如'lena.jpg'
    • 否則需要給出絕對路徑,如'D:xxxlena.jpg'
  • 參數(shù)2:讀入方式,省略即采用默認值 比較常用的是以下三個
public enum ImreadModes
    {
        Unchanged = -1, // 包含透明通道的彩色圖
        Grayscale = 0, // 灰度圖
        Color = 1, // 彩色圖
  ...
    }

注意:我們加載圖片的時候,最好不要使用中文路徑,容易入坑。

顯示圖片

使用 Cv2.ImShow() 顯示圖片,窗口會自適應圖片的大?。?/p>

Cv2.ImShow("lena", sourceImage);
Cv2.WaitKey(0);

// 定義
public void ImShow(string winName, Mat mat);
public static int WaitKey(int delay = 0);

Cv2.ImShow 參數(shù)1是窗口的名字,參數(shù)2是要顯示的圖片。不同窗口之間用窗口名區(qū)分,所以窗口名相同就表示是同一個窗口,顯示結(jié)果如下:

Cv2.WaitKey() ,從字面上看,等待一個輸入的意思 , 參數(shù)是等待時間(單位:毫秒ms)。時間一到,會繼續(xù)執(zhí)行接下來的程序,傳入0的話表示一直等待。當我們需要在根據(jù)某個輸入推出等待的時候,我們可以使用 k = Cv2.WaitKey(0) ,這樣 k 就是我們的輸入結(jié)果。

另外,我們也可以先用 Cv2.NamedWindow() 創(chuàng)建一個窗口,之后再顯示圖片:

Cv2.NamedWindow("lena2",  1);
Cv2.ImShow("lena", sourceImage);
Cv2.WaitKey(0);

// 定義

public void NamedWindow(string winName, WindowFlags flags = WindowFlags.GuiExpanded)

參數(shù)1依舊是窗口的名字,參數(shù)2默認是WindowFlags.GuiExpanded,表示窗口展示模式。

保存圖片

使用Cv2.ImWrite保存圖片,參數(shù)1是包含后綴名的文件名, 參數(shù)2 是:

Cv2.ImWrite("lena.jpg", sourceImage);

// 定義
public static void ImShow(string winName, Mat mat)

是不是感覺很簡單,OpenCV在圖片的基礎(chǔ)操作上其實都挺簡單的,到后面加上一些應用場景之后就會復雜起來。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • RGB
    RGB
    +關(guān)注

    關(guān)注

    4

    文章

    796

    瀏覽量

    58336
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4277

    瀏覽量

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

    關(guān)注

    30

    文章

    4722

    瀏覽量

    68231
  • OpenCV
    +關(guān)注

    關(guān)注

    29

    文章

    624

    瀏覽量

    41214
收藏 人收藏

    評論

    相關(guān)推薦

    #硬聲創(chuàng)作季 3-3 如何通過OpenCV加載顯示圖片

    人工智能opencv
    Mr_haohao
    發(fā)布于 :2022年08月30日 15:19:33

    #硬聲創(chuàng)作季 3-4 兩招解決OpenCV加載圖片問題

    人工智能opencv
    Mr_haohao
    發(fā)布于 :2022年08月30日 15:20:46

    【DragonBoard 410c試用體驗】之OpenCV加載圖片實驗

    OpenCV這里先利用OpenCV載入一張圖片并進行顯示,其實也就是讀取圖片代碼如下:#include//頭文件using namespace cv;//包含cv命名空間void ma
    發(fā)表于 09-10 19:16

    【DragonBoard 410c試用體驗】cvThreshold閾值操作實現(xiàn)二值圖像

    IDLE(9.7)https://bbs.elecfans.com/jishu_937169_1_1.html10、【DragonBoard 410c試用體驗】之OpenCV加載圖片實驗(9.10
    發(fā)表于 10-07 22:11

    【NanoPi NEO試用體驗】OpenCV使用篇

    本帖最后由 jj1989 于 2016-12-3 20:56 編輯 在上一篇文章中,介紹了USB攝像頭的使用,這次介紹一下OpenCV的簡單使用,以打開一張圖片為例。一、OpenCV簡介
    發(fā)表于 12-03 20:56

    Opencv圖片處理

    Opencv-培訓(一)
    發(fā)表于 06-12 12:28

    【HarmonyOS】鴻蒙圖片加載工具匯總

    1、最常用的圖片加載工具——GlideGlide 是一個快速高效的 openharmony 圖像加載庫,專注于平滑滾動。Glide 提供了一個易于使用的 API、一個高性能和可擴展的資源解碼管道
    發(fā)表于 03-25 13:51

    求助,OpenCV的imread接口讀取進來的JPG圖片尺寸問題

    OpenCV的imread接口讀取進來的JPG圖片尺寸問題
    發(fā)表于 09-19 07:52

    OpenCV3編程入門-源碼例程全集-查找和繪制圖片輪廓矩

    OpenCV3編程入門-源碼例程全集-查找和繪制圖片輪廓矩
    發(fā)表于 09-17 22:54 ?2次下載

    如何使用OpenCV來實現(xiàn)模型加載與推演

    今早在GitHub上收到一則issue,發(fā)信人為Suaro。 Suaro希望使用OpenCV來實現(xiàn)模型加載與推演,但是沒有成功,因此開了issue尋求我的幫助。 現(xiàn)場圍觀該Issue: https
    的頭像 發(fā)表于 11-27 09:43 ?2344次閱讀

    基于openharmony適配移植的圖片加載

    項目介紹 項目名稱:Sketch 所屬系列:openharmony的第三方組件適配移植 功能:一款強大且全面的圖片加載器,除了圖片加載的必備功能外,還支持 GIF,手勢縮放、分塊顯示超
    發(fā)表于 03-22 14:41 ?3次下載

    opencv讀入圖片注意事項詳解1

    深度學習數(shù)據(jù)預處理中常用opencv讀入圖片,一般在`__getitem__`函數(shù)中調(diào)用。本文主要介紹opencv讀取圖片的一些細節(jié)以及注意事項。本文中使用的
    的頭像 發(fā)表于 02-07 16:06 ?586次閱讀

    opencv讀入圖片注意事項詳解 2

    深度學習數(shù)據(jù)預處理中常用opencv讀入圖片,一般在`__getitem__`函數(shù)中調(diào)用。本文主要介紹opencv讀取圖片的一些細節(jié)以及注意事項。本文中使用的
    的頭像 發(fā)表于 02-07 16:06 ?635次閱讀

    如何在LabVIEW中清晰加載圖片呢?

    有開發(fā)者提出,在使用LabVIEW開發(fā)圖片加載顯示程序時,為什么明明看著很清晰的圖片,LabVIEW加載顯示后就變得粗糙,線條不流暢。
    的頭像 發(fā)表于 12-20 09:08 ?1542次閱讀
    如何在LabVIEW中清晰<b class='flag-5'>加載</b><b class='flag-5'>圖片</b>呢?

    【AWTK使用經(jīng)驗】加載和釋放外部圖片

    指定路徑的圖片資源AWTK默認加載資源方式有兩種,一種是將資源打包到程序中放入Flash,另一種是放在res資源目錄中。假設現(xiàn)在需要實現(xiàn)一個圖片瀏覽器并移植到ZT
    的頭像 發(fā)表于 04-26 08:25 ?413次閱讀
    【AWTK使用經(jīng)驗】<b class='flag-5'>加載</b>和釋放外部<b class='flag-5'>圖片</b>