1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        獨家|OpenCV 1.4 對圖像的操作

        共 2584字,需瀏覽 6分鐘

         ·

        2021-08-04 03:22

        翻譯:陳之炎

        校對:吳振東


        本文約2400字,建議閱讀5分鐘

        本文為大家系統(tǒng)地介紹了OpenCV對圖像的操作。


        圖像的輸入/輸出


        從文件中加載圖像:


        如果讀入的是一個JPG文件,默認狀態(tài)下會創(chuàng)建一個3通道圖像。如果你需要將其制成灰度圖像,則使用以下代碼:



        文件格式由其內容(前幾個字節(jié))確定。將圖像保存為一個文件:



        文件的格式由其擴展名確定。

        用CV :: imdecode和CV :: imencode從內存中讀取和寫入圖像。

        基本的圖像操作


        訪問像素亮度值


        為了獲取像素亮度值,首先必須知道圖像的類型和通道數(shù)。下面是一個單通道灰度圖像的示例(數(shù)據(jù)類型8UC1)和像素坐標x和y:


        C ++版本:intensity.val [0]包含從0到255的值,需要注意的是x和y的排序。OpenCV圖像采用了結構化的矩陣來表示,使用以下兩種情形使用同樣的協(xié)議 - 基于0的行索引(或y坐標)在先,后面跟隨基于0的列索引(或x坐標)。此外,也可以使用下面的符號(僅適用于C ++ ):


        下面,來看一個BGR色彩排序的3通道圖像(由imread返回默認格式):

        C ++代碼


        Python



        對于數(shù)據(jù)類型為浮點值的圖像,可以使用相同的方法(例如,可以通過運行Sobel算子獲取一個通道的圖像)(僅適用于C ++):


        利用相同的方法可以修改像素亮度值:


        OpenCV中有一些函數(shù),尤其是在calib3d模塊中,如CV :: projectPoints函數(shù),可以將 2D或3D像素點值轉換成Mat形式的矩陣。該矩陣包含一列,每一行對應于一個點,矩陣類型為32FC2或32FC3。利用std::vector可以很容易地構建出這樣的矩陣(僅適用于C ++):


        利用相同的方法Mat::at可以訪問矩陣中的點(僅適用于C ++):


        內存管理和引用計數(shù)


        Mat是保持矩陣/圖像特性的一種結構(包括行數(shù)和列數(shù),數(shù)據(jù)類型等)和一個指向數(shù)據(jù)的指針。對應一個相同的圖像數(shù)據(jù),可以構建出多個Mat實例,此外, Mat還包含一個引用計數(shù)器,當Mat對象被釋放時,利用引用計數(shù)器指針來決定是否重新分配數(shù)據(jù)。下面的這個例子是在不進行數(shù)據(jù)復制的情況下,創(chuàng)建兩個MAT矩陣: (僅適用于C ++)


        結果得到了一個3列的32FC1矩陣,而不是一個1列的32FC3矩陣。pointsMat使用像素點的數(shù)據(jù),釋放時無需重新分配內存。在這種特殊情況下,開發(fā)人員必須確保 points的生命周期要比比pointsMat的生命周期更長。如果需要復制數(shù)據(jù)的話,則使用cv::Mat::copyTo或者 cv::Mat::clone兩個函數(shù):


        應為上述每個函數(shù)提供一個空的Mat輸出,每一次實現(xiàn)均是對目標矩陣調用一次Mat::create。如果矩陣為空,則利用該方法為矩陣分配數(shù)據(jù)。如果矩陣不為空,并且大小和數(shù)據(jù)類型均無誤,則該方法不起作用。然而,如果大小或數(shù)據(jù)類型與輸入?yún)?shù)不同,則重新分配(和丟失)原有數(shù)據(jù),重新分配一個新的數(shù)據(jù):



        基本操作

        每一個像素矩陣均定義有一些快捷的操作符。例如,下面是如何從現(xiàn)有的灰度圖像中提取出黑色圖像IMG


        選擇感興趣的區(qū)域:


        將彩色圖像轉換成灰度圖像:


        將圖像類型從8UC1變?yōu)?32FC1:


        可視化圖像


        在算法開發(fā)過程中,如果能看到運行的中間結果是非常有用的。OpenCV提供了一種可視化圖像的便捷方式。采用以下代碼可以顯示一副8U圖像:



        調用waitKey()函數(shù)啟動消息傳遞周期,等待“圖像”窗口的一次鍵盤鍵入。此時,需要將32F圖像轉換為8U類型的圖像。例如:




        這里沒有必要使用CV :: namedWindow函數(shù),因為它后面緊跟著CV :: imshow。然而,可以用cv::createTrackbar來改變窗口屬性。


        本文以C++語言代碼為例,獲取Java和python版本可在原文中查看:
        https://docs.opencv.org/4.5.2/d5/d98/tutorial_mat_operations.html

        編輯:王菁
        校對:汪雨晴

        下一小節(jié):1.5 利用OpenCV疊加(混合)兩幅圖像

        往期回顧:
        獨家|OpenCV 1.1 Mat - 基本圖像容器(附鏈接)

        獨家|OpenCV 1.2 如何用OpenCV掃描圖像、查找表和測量時間(附鏈接)

        獨家|OpenCV 1.3 矩陣的掩膜操作(附鏈接)





        譯者簡介





        陳之炎,北京交通大學通信與控制工程專業(yè)畢業(yè),獲得工學碩士學位,歷任長城計算機軟件與系統(tǒng)公司工程師,大唐微電子公司工程師,現(xiàn)任北京吾譯超群科技有限公司技術支持。目前從事智能化翻譯教學系統(tǒng)的運營和維護,在人工智能深度學習和自然語言處理(NLP)方面積累有一定的經(jīng)驗。業(yè)余時間喜愛翻譯創(chuàng)作,翻譯作品主要有:IEC-ISO 7816、伊拉克石油工程項目、新財稅主義宣言等等,其中中譯英作品“新財稅主義宣言”在GLOBAL TIMES正式發(fā)表。能夠利用業(yè)余時間加入到THU 數(shù)據(jù)派平臺的翻譯志愿者小組,希望能和大家一起交流分享,共同進步

        翻譯組招募信息

        工作內容:需要一顆細致的心,將選取好的外文文章翻譯成流暢的中文。如果你是數(shù)據(jù)科學/統(tǒng)計學/計算機類的留學生,或在海外從事相關工作,或對自己外語水平有信心的朋友歡迎加入翻譯小組。

        你能得到:定期的翻譯培訓提高志愿者的翻譯水平,提高對于數(shù)據(jù)科學前沿的認知,海外的朋友可以和國內技術應用發(fā)展保持聯(lián)系,THU數(shù)據(jù)派產(chǎn)學研的背景為志愿者帶來好的發(fā)展機遇。

        其他福利:來自于名企的數(shù)據(jù)科學工作者,北大清華以及海外等名校學生他們都將成為你在翻譯小組的伙伴。


        點擊文末“閱讀原文”加入數(shù)據(jù)派團隊~



        轉載須知

        如需轉載,請在開篇顯著位置注明作者和出處(轉自:數(shù)據(jù)派ID:DatapiTHU),并在文章結尾放置數(shù)據(jù)派醒目二維碼。有原創(chuàng)標識文章,請發(fā)送【文章名稱-待授權公眾號名稱及ID】至聯(lián)系郵箱,申請白名單授權并按要求編輯。

        發(fā)布后請將鏈接反饋至聯(lián)系郵箱(見下方)。未經(jīng)許可的轉載以及改編者,我們將依法追究其法律責任。



        點擊“閱讀原文”擁抱組織



        瀏覽 26
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            91手机看片 | 性交综合网 | 国产美女作爱 | 我被继夫添我阳道舒服电影 | 在线免费黄色视频网站 | 欧美老人美女做爱视频免费链接 | 婷婷五月天丁香网 | 91麻豆精品国产91久久久吃药 | 嗯~啊~快点死我漫画 | 久逼逼 |