#include <ctype.h>
#include <stdio.h>
#include <iostream>
static void help(char** argv)
{
cout <<
"\n此程式演示了使用 OpenCV 函式 Laplacian() 進行拉普拉斯點/邊緣檢測\n"
"它從您選擇的相機捕獲:0, 1, ... 預設 0\n"
"呼叫:\n"
<< argv[0] << " -c=<相機 #, 預設 0> -p=<要解碼/捕獲的下一幀的索引>\n" << endl;
}
enum {GAUSSIAN, BLUR, MEDIAN};
int sigma = 3;
int smoothType = GAUSSIAN;
int main(
int argc,
char** argv )
{
help(argv);
string camera = parser.
get<
string>(
"c");
if (camera.size() == 1 && isdigit(camera[0]))
cap.
open(parser.get<
int>(
"c"));
else
cap.
open(samples::findFileOrKeep(camera));
{
cerr << "無法開啟相機/影片流: " << camera << endl;
return 1;
}
cout << "影片 " << parser.get<string>("c") <<
": 寬度=" << cap.
get(CAP_PROP_FRAME_WIDTH) <<
", 高度=" << cap.
get(CAP_PROP_FRAME_HEIGHT) <<
", 幀數=" << cap.
get(CAP_PROP_FRAME_COUNT) << endl;
int pos = 0;
if (parser.has("p"))
{
pos = parser.get<int>("p");
}
if (!parser.check())
{
parser.printErrors();
return -1;
}
if (pos != 0)
{
cout << "正在查詢幀 #" << pos << endl;
if (!cap.
set(CAP_PROP_POS_FRAMES, pos))
{
cerr << "錯誤:不支援查詢" << endl;
}
}
Mat smoothed, laplace, result;
for(;;)
{
cap >> frame;
break;
int ksize = (sigma*5)|1;
if(smoothType == GAUSSIAN)
else if(smoothType == BLUR)
blur(frame, smoothed,
Size(ksize, ksize));
else
if( c == ' ' )
smoothType = smoothType == GAUSSIAN ? BLUR : smoothType == BLUR ? MEDIAN : GAUSSIAN;
if( c == 'q' || c == 'Q' || c == 27 )
break;
}
return 0;
}
如果陣列沒有元素,則返回 true。
int64_t int64
cv::getTickFrequency
double getTickFrequency()
用於指定影像或矩形大小的模板類。
Definition types.hpp:335
用於從影片檔案、影像序列或相機捕獲影片的類。
Definition videoio.hpp:772
virtual bool open(const String &filename, int apiPreference=CAP_ANY)
開啟影片檔案或捕獲裝置或 IP 影片流以進行影片捕獲。
virtual bool set(int propId, double value)
設定 VideoCapture 中的屬性。
virtual bool isOpened() const
如果影片捕獲已初始化,則返回 true。
virtual double get(int propId) const
返回指定的 VideoCapture 屬性。
void convertScaleAbs(InputArray src, OutputArray dst, double alpha=1, double beta=0)
縮放,計算絕對值,並將結果轉換為 8 位。
void imshow(const String &winname, InputArray mat)
在指定視窗中顯示影像。
int waitKey(int delay=0)
等待按鍵按下。
void namedWindow(const String &winname, int flags=WINDOW_AUTOSIZE)
建立視窗。
int createTrackbar(const String &trackbarname, const String &winname, int *value, int count, TrackbarCallback onChange=0, void *userdata=0)
建立滑動條並將其附加到指定視窗。
void medianBlur(InputArray src, OutputArray dst, int ksize)
使用中值濾波器模糊影像。
void blur(InputArray src, OutputArray dst, Size ksize, Point anchor=Point(-1,-1), int borderType=BORDER_DEFAULT)
使用歸一化盒式濾波器模糊影像。
void Laplacian(InputArray src, OutputArray dst, int ddepth, int ksize=1, double scale=1, double delta=0, int borderType=BORDER_DEFAULT)
計算影像的拉普拉斯運算元。
void GaussianBlur(InputArray src, OutputArray dst, Size ksize, double sigmaX, double sigmaY=0, int borderType=BORDER_DEFAULT, AlgorithmHint hint=cv::ALGO_HINT_DEFAULT)
使用高斯濾波器模糊影像。
int main(int argc, char *argv[])
定義 highgui_qt.cpp:3