资源简介
visual studio,链接opencv以c++为工具实现分水岭算法,
代码片段和文件信息
#include “pch.h“
#include
#include
#include
using namespace cv;
using namespace std;
#define WINDOW_NAME “窗口“
Mat g_maskImage g_srcImage;
Point prevPt(-1 -1);
static void on_Mouse(int event int x int y int flags void *)
{
//处理鼠标不在窗口中的情况
if (x < 0 || x >= g_srcImage.cols || y < 0 || y >= g_srcImage.rows)
return;
//处理鼠标左键相关信息
if (event == EVENT_LBUTTONUP || !(flags&EVENT_FLAG_LBUTTON))
prevPt = Point(-1 -1);
else if (event == EVENT_LBUTTONDOWN)
prevPt = Point(x y);
//鼠标左键按下并移动,绘制出白色线条
else if (event == EVENT_MOUSEMOVE && (flags&EVENT_FLAG_LBUTTON))
{
Point pt(x y);
if (prevPt.x < 0)
prevPt = pt;
//参数:输入,线段的起点,线段的终点,线段的颜色,,线条的宽度,线段的类型,坐标点小数点位数
line(g_maskImage prevPt pt Scalar::all(255) 5 8 0);
line(g_srcImage prevPt pt Scalar::all(255) 5 8 0);
prevPt = pt;
imshow(WINDOW_NAME g_srcImage);
}
}
int main()
{
//载入原图并显示,初始化掩膜和灰度图
g_srcImage = imread(“1.jpg“ 1);
imshow(WINDOW_NAME g_srcImage);
Mat srcImage grayImage;
g_srcImage.copyTo(srcImage);
cvtColor(g_srcImage g_maskImage COLOR_BGR2GRAY);
cvtColor(g_maskImage grayImage COLOR_GRAY2RGB);
g_maskImage = Scalar::all(0);
//设置鼠标回调函数
setMouseCallback(WINDOW_NAME on_Mouse 0);
//轮询按键,进行处理
while (1)
{
//获取按键
int c = waitKey(0);
//若按键值为ESC退出
if ((char)c == 27)
break;
//按键为2时恢复原图
if ((char)c == ‘2‘)
{
g_maskImage = Scalar::all(0);
srcImage.copyTo(g_srcImage);
imshow(“image“ g_srcImage);
}
//按键为1或空格,进行处理
if ((char)c == ‘1‘ || (char)c == ‘ ‘)
{
//定义一些参数
int i j compCount = 0;
vector> contours;
vector
- 上一篇:MFC重绘Button为圆形。
- 下一篇:语音情感识别matlab源代码.zip
评论
共有 条评论