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>

        圖像特效顯示 | 馬賽克顯示,掃描顯示等

        共 2816字,需瀏覽 6分鐘

         ·

        2020-12-23 20:48

        點擊上方AI算法與圖像處理”,選擇加"星標"或“置頂

        重磅干貨,第一時間送達

        來源:Opencv視覺實踐








        前言

        之前看的楊淑瑩老師的《數(shù)字圖像處理Visual Studio C++技術(shù)實現(xiàn)》,里面的代碼都沒來得及打,而且其是基于自定義的圖像類實現(xiàn)的,這個系列就把所有例程移植為opencv-C++實現(xiàn),也就是算法邏輯用C++實現(xiàn),圖像對象使用opencv自帶的圖像類。

        該書在B站有配套教程,是天津理工大學(xué)楊淑瑩老師的公開課,直接搜就行。

        所以此系列不詳細講原理,只放基本思路+代碼+運行效果,詳細原理可以看書,我就不復(fù)述書的內(nèi)容了。

        圖像掃描顯示

        向下掃描就是對圖像進行分塊并延時顯示。

        可以通過不斷的改變顯示的roi區(qū)域來達到掃描的效果:

        void scanning_down(){  //讀取圖片  Mat srcImage, dstImage;  srcImage = imread("2.jpg");  imshow("原圖", srcImage);  //定義變量  Mat roiImage;  int ImageHeigth = srcImage.rows;  int ImageWidth = srcImage.cols;  namedWindow("向下掃描");  for (int i = 1; i < ImageHeigth; i++) {//步長為1    roiImage = srcImage(Rect(0, 0, ImageWidth, i));    roiImage.copyTo(dstImage);    imshow("向下掃描", dstImage);    waitKey(5);  }  waitKey(0);}

        動圖

        向上,向左,向右掃描顯示同理。

        圖像漸顯

        圖像漸顯思路是先記錄下圖像每個像素點的像素值,顯示的時候先將屏幕置黑,將循環(huán)顯示圖像n次,n依次為0,1,2,...,256。每一次顯示像素值的n/256倍,從而達到漸顯的效果。

        void fade_in()//淡入{  //讀取圖片  Mat srcImage, dstImage;  srcImage = imread("2.jpg");  dstImage = srcImage.clone();  imshow("原圖", srcImage);  //定義變量  Mat roiImage;  int ImageHeigth = srcImage.rows;  int ImageWidth = srcImage.cols * 3;  namedWindow("圖像漸顯");  for (int n = 1; n < 256; n++) {    for (int i = 0; i < ImageHeigth; i++) {      uchar* data1 = srcImage.ptr(i);      uchar* data2 = dstImage.ptr(i);      for (int j = 0; j < ImageWidth; j++) {        data2[j] = data1[j] * n / 256;
        } } imshow("圖像漸顯", dstImage); waitKey(10); }}

        動圖

        馬賽克顯示

        馬賽克顯示是將圖片分為固定大小的小塊,并記錄下所有小塊的左上角坐標,然后隨機將這些小塊顯示出來,就是馬賽克效果。

        //圖像馬賽克顯示void mosaic() {  //讀取圖片  Mat srcImage, dstImage;  srcImage = imread("2.jpg");  dstImage = Mat(srcImage.size(), CV_8UC3);  imshow("原圖", srcImage);  //定義變量  Mat roiImage;  int ImageHeigth = srcImage.rows;  int ImageWidth = srcImage.cols;  namedWindow("圖像馬賽克顯示");  //存儲每個小塊的首地址并隨機打亂  int step =24;//定義馬賽克邊長(正方形)  vector temp;  unsigned int mi = 0;  //for循環(huán)存儲所有節(jié)點坐標  for (int x = 0; x < ImageWidth; x = x + step) {    for (int y = 0; y < ImageHeigth; y = y + step) {      if (x > ImageWidth - step) {        x = ImageWidth - step;      }      if (y > ImageHeigth - step) {        y = ImageHeigth - step;      }      temp.push_back(Point2d(x,y));      mi++;    }  }    random_shuffle(temp.begin(), temp.end());//打亂容器內(nèi)元素  //for循環(huán)顯示每個隨機馬賽克  for (int i = 0; i < mi; i++) {    srcImage(Rect(temp[i].x, temp[i].y, step, step)).copyTo(dstImage(Rect(temp[i].x, temp[i].y, step, step)));    imshow("圖像馬賽克顯示", dstImage);    waitKey(1);  }  waitKey(0);}

        動圖

        THE? END

        如果喜歡此系列,可以幫忙點下底部小卡片支持一下。


        下載1:何愷明頂會分享


        AI算法與圖像處理」公眾號后臺回復(fù):何愷明,即可下載。總共有6份PDF,涉及 ResNet、Mask RCNN等經(jīng)典工作的總結(jié)分析


        下載2:leetcode?開源


        AI算法與圖像處理」公眾號后臺回復(fù):leetcode,即可下載。每題都 runtime beats 100% 的開源好書,你值得擁有!



        下載3 CVPR2020

        AI算法與圖像處公眾號后臺回復(fù):CVPR2020,即可下載1467篇CVPR?2020論文
        個人微信(如果沒有備注不拉群!
        請注明:地區(qū)+學(xué)校/企業(yè)+研究方向+昵稱


        覺得不錯就點亮在看吧

        瀏覽 51
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

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

        手機掃一掃分享

        分享
        舉報
        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>
            乱子伦在线视频 | 久草九九 | 苍井空无码播放 | 少女操逼片 | 红桃无码视频 | 九色导航| 国产大鸡巴 | 国产第一草草影院 | 国产精品久久久久久久久潘金莲 | 老鸭窝毛片观看 |