欧美大屁股bbbbxxxx,狼人大香伊蕉国产www亚洲,男ji大巴进入女人的视频小说,男人把ji大巴放进女人免费视频,免费情侣作爱视频

歡迎來到入門教程網(wǎng)!

C語言

當(dāng)前位置:主頁 > 軟件編程 > C語言 >

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

來源:本站原創(chuàng)|時(shí)間:2020-01-10|欄目:C語言|點(diǎn)擊: 次

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

自行學(xué)習(xí)弄得簡(jiǎn)單代碼,使用了圖像中的輪廓發(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;
//聲明一個(gè)函數(shù),建立滑動(dòng)條
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;
  }

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

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

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

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

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

回調(diào)函數(shù)

static void on_trackbar(int pos, void*)
{

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

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

  //識(shí)別輪廓
  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;

  //將圖拷貝,進(jìn)行遍歷圖片每個(gè)像素
  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,即白色,因?yàn)檫@里需要的是最外輪廓,所以為contours[0],如果還需要?jiǎng)e的,contours[i],i 可以取其他值
      if (pointPolygonTest(contours[0],Point(i,j),false) != 1)
        sdata[i]=255;
       }   
    }
  }

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

}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持我們。

上一篇:使用udp發(fā)送&amp;gt;=128K的消息會(huì)報(bào)ENOBUFS的錯(cuò)誤的解決方法

欄    目:C語言

下一篇:C/C++實(shí)現(xiàn)雙路快速排序算法原理

本文標(biāo)題:Opencv圖像處理之輪廓外背景顏色改變

本文地址:http://mengdiqiu.com.cn/a1/Cyuyan/287.html

網(wǎng)頁制作CMS教程網(wǎng)絡(luò)編程軟件編程腳本語言數(shù)據(jù)庫服務(wù)器

如果侵犯了您的權(quán)利,請(qǐng)與我們聯(lián)系,我們將在24小時(shí)內(nèi)進(jìn)行處理、任何非本站因素導(dǎo)致的法律后果,本站均不負(fù)任何責(zé)任。

聯(lián)系QQ:835971066 | 郵箱:835971066#qq.com(#換成@)

Copyright © 2002-2020 腳本教程網(wǎng) 版權(quán)所有