1. 滑块和按钮
int creatTrackbar(const char* trackbar_name,
const char* window_name,
int* value,
int count,
CvTrackbarCallback on_change = 0,
void* userdata = 0);
- 第一个参数:轨迹条的名字。
- 第二个参数:轨迹条所依附的窗口的名字。
- 第三个参数:滑块初始时的位置,即变量的初值。
- 第四个参数:滑块能到达的最大位置。(最小位置始终为0)。
- 第五个参数:指向回调函数的指针。函数原型必须为 void 函数名(int, void*)。
- 第六个参数:默认值0。
- 第七个参数:
- 第八个参数
低八位
参数4代表四联通,即九宫格的十字形区域。
参数8代表八连通,即九宫格的周围区域。高八位:
FLOODFILL_FIXED_RANGE,考虑当前像素与种子像素之间的差。
FLOODFILL_MASK_ONLY,不改变原始图像,只改变掩膜的内容。中八位
用于指定填充掩码图像的值。但是不能用“0”来填充,否则仍会被当做“1”来填充掩码图像。
FLOODFILL_MASK_ONLY | FILOODFILL_FIXED_RANGE | (3)
//多个参数之间用“|”连接
注意:
- 轨迹条依附于窗口,所以再创建轨迹条时要建立好窗口。
- 合适地利用全局变量。
2. 鼠标
setMouseCallback(const string& winname,
MouseCallback onMouse,
void* userdata=0);
//Create a variable to save the position value in track
int blurAmount = 15;
//Trackbar call back function
static void onChange(int pos, void* userInput);
//Mouse callback
static void onMouse(int event, int x, int y, int, void *userInput);
int main(argc, const char**argv)
{
//Read images
Mat lena = imread("");
//Create windows
namedWindow();
//Create a trackbar
createTrackbar("Lena", "Lena", &blurAmount, 30, on Change, &lena);
setMouseCallback("Lena", onMouse, &lena);
//Call to onChange to init
onChange(blurAmount, &lena);
//wait app for a key to exit
waitKey(0);
//Destory the windows
destoryWindow("Lena");
return 0;
}
3. 摄像头
//如果有外接摄像头,则ID为0,内置为1,否则用0就可以表示内置摄像头
VideoCapture cap(0);