91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 220KB
    文件類型: .rar
    金幣: 2
    下載: 0 次
    發布日期: 2021-05-20
  • 語言: 其他
  • 標簽: OpenCV??VS2017??

資源簡介

openCV中grabcut圖像分割函數使用示例,使用VS2017和opencv3.4.3編譯64位版本

資源截圖

代碼片段和文件信息

#include?
#include?
#include?
#include?“opencv2/highgui/highgui.hpp“
#include?“opencv2/imgproc/imgproc.hpp“
#include??
#include??

using?namespace?std;
using?namespace?cv;

const?string?winName?=?“image“;
const?Scalar?RED?=?Scalar(00255);
const?Scalar?BLUE?=?Scalar(25500);
Mat?outImage;

void?getBinMask(?const?Mat&?comMask?Mat&?binMask?)???//comMask?變換成binMask
{
if(?comMask.empty()?||?comMask.type()!=CV_8UC1?)
CV_Error(?CV_StsBadArg?“comMask?is?empty?or?has?incorrect?type?(not?CV_8UC1)“?);
if(?binMask.empty()?||?binMask.rows!=comMask.rows?||?binMask.cols!=comMask.cols?)?binMask.create(?comMask.size()?CV_8UC1?);?
binMask?=?comMask?&?1;
}

void?changeMask(?Mat&?mask?vector?bgdPixels?vector?fgdPixels?)?//把mask中的的前景背景改變
{
vector::const_iterator?it?=?bgdPixels.begin()?itEnd?=?bgdPixels.end();
for(?;?it?!=?itEnd;?++it?)
mask.at(*it)?=?GC_BGD;
it?=?fgdPixels.begin()?itEnd?=?fgdPixels.end();
for(?;?it?!=?itEnd;?++it?)
mask.at(*it)?=?GC_FGD;
}

void?showImage(?Mat&?_img?Mat&?_mask?vector&?_bgdPxls?vector&?_fgdPxls?)??//加載顯示圖像
{
Mat?res;
Mat?binMask;
if(?_mask.empty()?)???????//_mask為空,直接拷貝
_img.copyTo(?res?);???//_img?->?res
else????????????????????????????????//_mask不為空,變換后拷貝
{
getBinMask(?_mask?binMask?);???//bin
_img.copyTo(?res?binMask?);????//_img?-?binMask?->?res??只拷貝binMask非空時_img的像素
}

vector::const_iterator?it;
for(?it?=?_bgdPxls.begin();?it?!=?_bgdPxls.end();?++it?)??//畫出背景信息
circle(?res?*it?1?BLUE?);???//(圖像,圓心坐標,圓心半徑,顏色)??
//?函數cvCircle繪制或填充一個給定圓心和半徑的圓。
//圓被感興趣矩形所裁剪。?若指定圓的顏色,可以使用宏?CV_RGB?(?r?g?b?)。?
for(?it?=?_fgdPxls.begin();?it?!=?_fgdPxls.end();?++it?)??//畫出前景信息
circle(?res?*it?1?RED?);

imshow(?winName?res?);
res.copyTo(outImage);
}

Mat?image;

Mat?mask;
Mat?bgdModel?fgdModel;
Rect?rect;

enum{?NOT_SET?=?0?IN_PROCESS?=?1?SET?=?2?};
uchar?rectState?=?NOT_SET;??//矩形框
uchar?lblsState?=?NOT_SET;

vector?fgdPxls?bgdPxls;
Point?p1?p2;
int?iterCount;
/*
這個函數的原型應該為??void?Foo(int?event?int?x?int?y?int?flags?void*?param);
其中event是?CV_EVENT_*變量之一,
x和y是鼠標指針在圖像坐標系的坐標(不是窗口坐標系),
flags是CV_EVENT_FLAG的組合,?
param是用戶定義的傳遞到cvSetMouseCallback函數調用的參數。?
*/
void?on_mouse(?int?event?int?x?int?y?int?flags?void*?param?)
{
switch(?event?)
{
case?CV_EVENT_LBUTTONDOWN:??//單擊鼠標左鍵down
{
bool?isb?=?(flags?&?CV_EVENT_FLAG_ALTKEY)?!=?0??//是否選中alt鍵
isf?=?(flags?&?CV_EVENT_FLAG_SHIFTKEY)?!=?0;?//是否選中shift鍵
if(?rectState?==?NOT_SET?&&?!isb?&&?!isf?)????//只點擊左鍵時
{
rectState?=?IN_PROCESS;???//正在處理矩形框
p1?=?Point(x?y);???//起點
}
if?(?(isb?||?isf)?&&?rectState?==?SET?)???//選中alt或shift鍵,并且矩形框已設置
{
lblsState?=?IN_PROCESS;???//正在畫背景或前景
}
}
break;
case?CV_EVENT_LBUTTONUP:???//點擊鼠標左鍵up
if(?rectState?==?IN_PROCESS?)?????//若是正在處理矩形框時
{
p2?=?Point(x?y);????????//終點
rect?=?Rect(?p1?p2?);???//矩形框選中
rectState?=?SET;?????????//矩形框狀態為已設置
gr

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件???????1433??2018-09-16?22:08??CV_grabcut?VS2017+OpenCV3.4.3\CV_grabcut.sln

?????文件???????4551??2012-03-22?14:38??CV_grabcut?VS2017+OpenCV3.4.3\CV_grabcut.vcproj

?????文件??????10293??2018-09-16?22:00??CV_grabcut?VS2017+OpenCV3.4.3\CV_grabcut.vcxproj

?????文件????????932??2018-09-16?21:55??CV_grabcut?VS2017+OpenCV3.4.3\CV_grabcut.vcxproj.filters

?????文件????????165??2018-09-16?21:55??CV_grabcut?VS2017+OpenCV3.4.3\CV_grabcut.vcxproj.user

?????文件???????6772??2018-09-16?22:01??CV_grabcut?VS2017+OpenCV3.4.3\grabcut.cpp

?????文件?????214696??2007-10-01?11:48??CV_grabcut?VS2017+OpenCV3.4.3\lena.jpg

?????文件??????30976??2018-09-16?21:55??CV_grabcut?VS2017+OpenCV3.4.3\UpgradeLog.htm

?????目錄??????????0??2018-09-16?22:09??CV_grabcut?VS2017+OpenCV3.4.3\x64

?????目錄??????????0??2018-09-16?22:09??CV_grabcut?VS2017+OpenCV3.4.3

-----------?---------??----------?-----??----

???????????????269818????????????????????10


評論

共有 條評論