<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          利用單應(yīng)性矩陣實現(xiàn)文檔對齊顯示

          共 1255字,需瀏覽 3分鐘

           ·

          2022-05-28 11:10


          點擊上方小白學(xué)視覺”,選擇加"星標"或“置頂

          重磅干貨,第一時間送達

          本文轉(zhuǎn)載自微信公眾號:OpenCV學(xué)堂

          關(guān)注獲取更多計算機視覺與深度學(xué)習(xí)知識

          基本思路

          有時候文本圖像,需要適當(dāng)?shù)男U蟛艜玫奖容^好的對齊顯示,常用的方法有兩個,一個是基于幾何變換,另外一個是基于透視變換。常見的處理步驟如下:

          1. 文本對象輪廓提取或者手動調(diào)整

          2. 應(yīng)用幾何變換或者透視變換實現(xiàn)顯示對齊

          3. 然后再繼續(xù)其它的后續(xù)處理


          如果可以得到文檔的四個輪廓點就可以進行單應(yīng)性矩陣計算,然后完成透視變換實現(xiàn)文檔對齊顯示。首先看一下我的運行效果:

          最左側(cè)是輸入的圖像,中間是輪廓分析之后得到四個頂點,右側(cè)是單應(yīng)性矩陣變換之后得到輸出結(jié)果。

          代碼實現(xiàn)

          實現(xiàn)步驟

          1.首先對輸入圖像進行二值變換,然后進行輪廓分析,得到文檔輪廓

          2.調(diào)用approxPolyDP函數(shù)進行輪廓逼近,找到四個頂點坐標,這里需要注意一下,使用approxPolyDP函數(shù)進行輪廓逼近的時候,最后一個參數(shù)是表示輪廓逼近得到輪廓與原來輪廓之后的距離差值,值越小越逼近真實輪廓。我們這里希望得到一個大致近似的矩形即可,所以該值要盡可能的大一點,這個也是使用這個函數(shù)的一個編程技巧。

          3.得到四個點之后,創(chuàng)建目標點,然后調(diào)用findHomography,得到變換矩陣H,基于H完成透視變換得到最終的輸出。

          第一步的代碼實現(xiàn)如下:

          Mat?src?=?imread("D:/images/mytest.jpg");
          Mat?image?=?src.clone();
          Mat?gray,?binary;
          cvtColor(image,?gray,?COLOR_BGR2GRAY);
          threshold(gray,?binary,?0,?255,?THRESH_BINARY?|?THRESH_OTSU);

          //?發(fā)現(xiàn)輪廓
          vector<vector>?contours;
          vector?hierachy;
          findContours(binary,?contours,?hierachy,?RETR_EXTERNAL,?CHAIN_APPROX_SIMPLE);
          int?index?=?-1;
          double?max?=?-1;
          double?angle?=?0;
          for?(int?i?=?0;?i?????double?area?=?contourArea(contours[i]);
          ????if?(area?>?max)?{
          ????????max?=?area;
          ????????index?=?i;
          ????}
          }
          drawContours(image,?contours,?index,?Scalar(0,?255,?0),?2,?8);

          輸出如下:


          第二步的代碼實現(xiàn)如下:

          //?尋找矩形輪廓四個點
          Mat?approxCurves;
          approxPolyDP(contours[index],?approxCurves,?100,?true);
          printf("rows?:?%d,?cols?:?%d?\n",?approxCurves.rows,?approxCurves.cols);
          vector?srcPts;
          for?(int?n?=?0;?n?????Vec2i?pt?=?approxCurves.at(n,?0);
          ????printf("pt.x=?%d,?pt.y?=?%d?\n",?pt[0],?pt[1]);
          ????srcPts.push_back(Point2f(pt[0],?pt[1]));
          ????circle(image,?Point(pt[0],?pt[1]),?12,?Scalar(0,?0,?255),?8,?8,?0);
          }
          imwrite("D:/result.png",?image);

          輸出如下:


          第三步,透視變換

          Mat?h?=?findHomography(srcPts,?dstPts);
          warpPerspective(src,?dst,?h,?src.size());
          imwrite("D:/correct_document.png",?dst);

          輸出如下:



          好消息!?

          小白學(xué)視覺知識星球

          開始面向外開放啦??????




          下載1:OpenCV-Contrib擴展模塊中文版教程
          在「小白學(xué)視覺」公眾號后臺回復(fù):擴展模塊中文教程即可下載全網(wǎng)第一份OpenCV擴展模塊教程中文版,涵蓋擴展模塊安裝、SFM算法、立體視覺、目標跟蹤、生物視覺、超分辨率處理等二十多章內(nèi)容。

          下載2:Python視覺實戰(zhàn)項目52講
          小白學(xué)視覺公眾號后臺回復(fù):Python視覺實戰(zhàn)項目即可下載包括圖像分割、口罩檢測、車道線檢測、車輛計數(shù)、添加眼線、車牌識別、字符識別、情緒檢測、文本內(nèi)容提取、面部識別等31個視覺實戰(zhàn)項目,助力快速學(xué)校計算機視覺。

          下載3:OpenCV實戰(zhàn)項目20講
          小白學(xué)視覺公眾號后臺回復(fù):OpenCV實戰(zhàn)項目20講,即可下載含有20個基于OpenCV實現(xiàn)20個實戰(zhàn)項目,實現(xiàn)OpenCV學(xué)習(xí)進階。

          交流群


          歡迎加入公眾號讀者群一起和同行交流,目前有SLAM、三維視覺、傳感器自動駕駛、計算攝影、檢測、分割、識別、醫(yī)學(xué)影像、GAN、算法競賽等微信群(以后會逐漸細分),請掃描下面微信號加群,備注:”昵稱+學(xué)校/公司+研究方向“,例如:”張三?+?上海交大?+?視覺SLAM“。請按照格式備注,否則不予通過。添加成功后會根據(jù)研究方向邀請進入相關(guān)微信群。請勿在群內(nèi)發(fā)送廣告,否則會請出群,謝謝理解~


          瀏覽 43
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

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

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  天天干夜夜拍 | 大逼网| 美女被艹视频网站 | 狠狠人妻久久久久久综合99浪潮 | 久久久久无码精品国产91福利 |