欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Opencv圖像處理之輪廓外背景顏色改變

 更新時間:2019年05月21日 15:00:36   作者:hihushine  
這篇文章主要為大家詳細介紹了Opencv圖像處理之輪廓外背景顏色改變,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了Opencv輪廓外背景顏色改變的具體代碼,供大家參考,具體內容如下

自行學習弄得簡單代碼,使用了圖像中的輪廓發(fā)現(xiàn)以及提取,再繪制出來,改變輪廓外的像素

首先,頭文件,寫的比較多,沒用的可以自己去除

#include <opencv2/core/core.hpp> 
#include<opencv2/highgui/highgui.hpp> 
#include"opencv2/imgproc/imgproc.hpp" 
#include <iostream>
#include <fstream>
#include <opencv2/opencv.hpp> 

//命名空間
using namespace cv;
using namespace std;
//圖片數(shù)據(jù)名字,原圖,灰度圖,二值圖,直方圖
Mat src,src_gray,dst,src_equ;
//聲明一個函數(shù),建立滑動條
static void on_trackbar(int, void*);

主函數(shù)

int main(int argc, char** argv)
{
  //圖片讀入
  src = imread("D:\\PersonWork\\OpenCV\\program\\picture data\\0400.bmp");

  //判斷是否存在
  if (!src.data)
  {
    cout << "Image no find,error!" << endl;
  }

  //灰度轉換
  cvtColor(src,src_gray, CV_BGR2GRAY);

  //原圖窗口,顯示
  namedWindow("原圖", 0);
  imshow("原圖", src);

  //二值圖窗口
  namedWindow("二值圖", 0);

  // 滑動條  
  int nThreshold = 120;
  createTrackbar("graybar", "二值圖", &nThreshold, 255,on_trackbar); 
  on_trackbar(nThreshold, 0);

  waitKey(0);
  destroyWindow("原圖");
  destroyWindow("二值圖");
  destroyWindow("result");
  return 0;
}

回調函數(shù)

static void on_trackbar(int pos, void*)
{

  //二值化
  threshold(src_gray, dst, pos, 255, CV_THRESH_BINARY);
  imshow("二值圖", dst);

  //直方均勻化
  equalizeHist(dst, src_equ);

  //識別輪廓
  vector<vector<Point>> contours;
  vector<Vec4i> hierarchy;
  findContours(src_equ, contours, hierarchy, CV_RETR_CCOMP, CV_CHAIN_APPROX_NONE);    

  //輪廓數(shù)量,可沒有
  //int len=contours.size();
  //cout<<len<<endl;

  //將圖拷貝,進行遍歷圖片每個像素
  Mat secImg = src_gray.clone();
  const int np =secImg.rows * secImg.channels();
  const int nr = secImg.rows;
  for(int j=0;j<nr;j++){
    uchar *sdata = secImg.ptr<uchar>(j);
    for(int i=0;i<np;i++){

      //判斷是否在輪廓上或者外面,如果在便將像素變?yōu)?55,即白色,因為這里需要的是最外輪廓,所以為contours[0],如果還需要別的,contours[i],i 可以取其他值
      if (pointPolygonTest(contours[0],Point(i,j),false) != 1)
        sdata[i]=255;
       }   
    }
  }

  //result窗口以及顯示結果
  namedWindow("result",0);
  imshow("result",secImg);

}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • 淺談C++空間配置器allocator

    淺談C++空間配置器allocator

    在STL中,Memory Allocator處于最底層的位置,為一切的Container提供存儲服務,是一切其他組件的基石。對于一般使用 STL 的用戶而言,Allocator是不可見的。本文將主要介紹C++空間配置器allocator
    2021-06-06
  • C語言實現(xiàn)計算樹的深度的方法

    C語言實現(xiàn)計算樹的深度的方法

    這篇文章主要介紹了C語言實現(xiàn)計算樹的深度的方法,針對數(shù)據(jù)結構中樹進行操作的方法,在算法設計中比較常見,需要的朋友可以參考下
    2014-09-09
  • C++計算任意權值的單源最短路徑(Bellman-Ford)

    C++計算任意權值的單源最短路徑(Bellman-Ford)

    這篇文章主要為大家詳細介紹了C++計算任意權值的單源最短路徑,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • Qt網(wǎng)絡編程之TCP通信及常見問題

    Qt網(wǎng)絡編程之TCP通信及常見問題

    這篇文章主要為大家詳細介紹了Qt網(wǎng)絡編程之TCP通信及常見問題,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • C++調用Go方法的字符串傳遞問題及解決方案

    C++調用Go方法的字符串傳遞問題及解決方案

    這篇文章主要介紹了C++調用Go方法的字符串傳遞問題及解決方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-11-11
  • C語言運用函數(shù)的遞歸實現(xiàn)漢諾塔

    C語言運用函數(shù)的遞歸實現(xiàn)漢諾塔

    遞歸(recursive)函數(shù)是“自己調用自己”的函數(shù),無論是采用直接或間接調用方式。間接遞歸意味著函數(shù)調用另一個函數(shù)(然后可能又調用第三個函數(shù)等),最后又調用第一個函數(shù)。因為函數(shù)不可以一直不停地調用自己,所以遞歸函數(shù)一定具備結束條件
    2022-07-07
  • C++實現(xiàn)堆排序實例介紹

    C++實現(xiàn)堆排序實例介紹

    大家好,本篇文章主要講的是C++實現(xiàn)堆排序實例介紹,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • C 語言基礎教程(我的C之旅開始了)[四]

    C 語言基礎教程(我的C之旅開始了)[四]

    C 語言基礎教程(我的C之旅開始了)[四]...
    2007-02-02
  • 使用C語言操作文件的基本函數(shù)整理

    使用C語言操作文件的基本函數(shù)整理

    這篇文章主要介紹了使用C語言操作文件的基本函數(shù)整理,包括創(chuàng)建和打開以及關閉文件的操作方法,需要的朋友可以參考下
    2015-08-08
  • 深入C++中inline關鍵字的使用

    深入C++中inline關鍵字的使用

    本篇文章是對C++中inline關鍵字的使用進行了詳細的分析介紹,需要的朋友參考下
    2013-05-05

最新評論