• 大小: 4KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-05-29
  • 语言: C/C++
  • 标签:

资源简介

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

评论

共有 条评论

相关资源