亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

opencv3/C++基于顏色的目標跟蹤方式

 更新時間:2019年12月11日 10:34:28   作者:阿卡蒂奧  
今天小編就為大家分享一篇opencv3/C++基于顏色的目標跟蹤方式,具有很好的參考價值,希望對的有所幫助。一起跟隨小編過來看看吧

inRange函數

void inRange(InputArray src, InputArray lowerb, InputArray upperb, OutputArray dst);

src:輸入圖像;

lowerb:下邊界數組,閾值下限;

upperb:上邊界數組,閾值上限;

dst:輸出圖像;

顏色范圍如圖:

示例:

捕獲攝像頭中的黃色方塊

#include<opencv2/opencv.hpp>
using namespace cv;

int main()
{
	VideoCapture capture;
	capture.open(0);
	if(!capture.isOpened())
	{
		printf("can not open video file  \n");
		return -1;
	}
	Mat frame, dst;
	Mat kernel;
	//開操作處理
	kernel = getStructuringElement(MORPH_RECT, Size(5, 5));

	namedWindow("input", CV_WINDOW_AUTOSIZE);
	namedWindow("output", CV_WINDOW_AUTOSIZE);
	std::vector<std::vector<Point>> contours;
	std::vector<Vec4i> hireachy;
	Rect rect;
	Point2f center;
	float radius=20;

	while (capture.read(frame))
	{	
		//blur(frame, dst, Size(5,5));
		inRange(frame, Scalar(0,80,80), Scalar(50,255,255), dst);
		//開操作
		morphologyEx(dst,dst,MORPH_OPEN,kernel);
		//獲取邊界
		findContours(dst, contours, hireachy, RETR_EXTERNAL, CHAIN_APPROX_SIMPLE, Point(0,0));
		//框選面積最大的邊界
		if (contours.size() > 0)
		{
			double maxArea=0;
			for (int i = 0; i < contours.size(); i++)
			{
				double area = contourArea(contours[static_cast<int>(i)]);
				if (area > maxArea)
				{
					maxArea = area;
					rect = boundingRect(contours[static_cast<int>(i)]);
					minEnclosingCircle(contours[static_cast<int>(i)], center, radius);
				}
			}
		}
		//矩形框
		//rectangle(frame,rect, Scalar(0,255,0),2);
		//圓形框
		circle(frame, Point(center.x,center.y), (int)radius, Scalar(0,255,0), 2);
		imshow("input", frame);
		imshow("output", dst);

		waitKey(100);
	}

	capture.release();
	return 0;
}

關于顏色范圍的選?。?/strong>

有朋友問顏色范圍的事,比如我們選擇某個偏紅色的范圍,如色環(huán)圖中這個區(qū)間即BGR(0,128,255)到BGR(255,0,213);則B、G、R這三個通道的范圍分別為0-255,0-128,213-255。因此閾值下限lowerb=Scalar(0,0,213),閾值上限upperb=Scalar(255,128,255)。

以上這篇opencv3/C++基于顏色的目標跟蹤方式就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • C++程序的五大內存分區(qū)實例詳解

    C++程序的五大內存分區(qū)實例詳解

    C++內存區(qū)域,一般可分為棧內存區(qū)、堆內存區(qū)、全局/靜態(tài)內存區(qū)、文字常量內存區(qū)及程序代碼區(qū)5大分區(qū),本文就帶大家深刻的理解這5大內存分區(qū),感興趣的可以了解一下
    2021-10-10
  • Linux下C語言的fork()子進程函數用法及相關問題解析

    Linux下C語言的fork()子進程函數用法及相關問題解析

    fork()函數在Linux下可以用于產生一個子進程,這里我們挑選了兩個fork相關的面試題,來看一下Linux下C語言的fork()子進程函數用法及相關問題解析
    2016-06-06
  • C語言文件操作之fread函數詳解

    C語言文件操作之fread函數詳解

    fread()函數用來從指定文件中讀取塊數據,下面這篇文章主要給大家介紹了關于C語言文件操作之fread函數的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-06-06
  • C++11中的原子量和內存序詳解

    C++11中的原子量和內存序詳解

    這篇文章主要給大家介紹了關于C++11中原子量和內存序的相關資料,文中通過示例代碼介紹地方非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-06-06
  • c++ 頭文件<cwchar>中常見函數的實現(xiàn)代碼

    c++ 頭文件<cwchar>中常見函數的實現(xiàn)代碼

    本文記錄了c++ 頭文件<cwchar>中常見函數的實現(xiàn),本文結合實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2023-12-12
  • 純c實現(xiàn)異常捕獲try-catch組件教程示例

    純c實現(xiàn)異常捕獲try-catch組件教程示例

    這篇文章主要為大家介紹了純c實現(xiàn)異常捕獲try-catch組件教程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08
  • C++?多態(tài)虛函數的底層原理深入理解

    C++?多態(tài)虛函數的底層原理深入理解

    這篇文章主要介紹了C++?多態(tài)虛函數的底層原理深入理解,多態(tài)是在不同繼承關系的類對象,去調用同一函數,產生了不同的行為,通常是父類調用子類的重寫函數,在C++中就是?父類指針指向子類對象,此時父類指針的向下引用就可以實現(xiàn)多態(tài)
    2022-08-08
  • QT?UDP網絡編程實現(xiàn)簡單消息傳輸

    QT?UDP網絡編程實現(xiàn)簡單消息傳輸

    這篇文章主要為大家詳細介紹了QT?UDP網絡編程實現(xiàn)簡單消息傳輸,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • C語言中的getchar()使用詳解

    C語言中的getchar()使用詳解

    大家好,本篇文章主要講的是C語言中的getchar()使用詳解,感興趣的同學趕快來看一看吧,對你有幫助的話記得收藏一下
    2022-01-01
  • C語言 指針綜合解析

    C語言 指針綜合解析

    指針可以表示一個變更的地址,在計算機程序中,通常表示內存地址,存儲數據的地址,下面這篇文章主要給大家綜合的介紹了關于C語言指針的本質與用法
    2021-11-11

最新評論