基于opencv源程序的滑动条实现阈值变换

翻译 2017年01月02日 21:28:53
#include"stdafx.h"
#include <opencv2/core/utility.hpp>
#include "opencv2/imgproc.hpp"
#include "opencv2/imgcodecs.hpp"
#include "opencv2/highgui.hpp"
#include <iostream>

using namespace cv;
using namespace std;

// 设定阈值初值
Mat img;
int threshval = 100;

static void on_trackbar(int, void*)
{

	Mat bw = threshval < 128 ? (img < threshval) : (img > threshval);
	Mat labelImage(img.size(), CV_32S);
	int nLabels = connectedComponents(bw, labelImage, 8);
	std::vector<Vec3b> colors(nLabels);
	colors[0] = Vec3b(0, 0, 0);//background
	for (int label = 1; label < nLabels; ++label) {
		colors[label] = Vec3b((rand() & 255), (rand() & 255), (rand() & 255));
	}
	Mat dst(img.size(), CV_8UC3);
	for (int r = 0; r < dst.rows; ++r) {
		for (int c = 0; c < dst.cols; ++c) {
			int label = labelImage.at<int>(r, c);
			Vec3b &pixel = dst.at<Vec3b>(r, c);
			pixel = colors[label];
		}
	}

	imshow("Connected Components", dst);
}

int main()
{
	
	//读取原图片
	img = imread("E:\\pictures\\For_Project\\New_opencv\\Sceen\\4rt.jpg", 0);
	//判断是否为空
	if (img.empty())
	{
		cout << "Could not read input image file: " << endl;
		return -1;
	}
	//显示
	namedWindow("Image", 1);
	imshow("Image", img);

	namedWindow("Connected Components", 1);
	//创建滑动窗口
	createTrackbar("Threshold", "Connected Components", &threshval, 255, on_trackbar);
	on_trackbar(threshval, 0);

	waitKey(0);
	return 0;
}

效果图:


相关文章推荐

OpenCV中通过滑动条阈值分割多通道图像

阈值分割阈值分割法是一种基于区域的图像分割技术。其基本原理是:通过设定不同的特征阈值,把图像象素点分为若干类。通过滑动条可以很方便地同程序进行交互完成阈值分割。...

opencv 滑动条设置

  • 2014年03月23日 15:23
  • 1KB
  • 下载

OpenCV之滑动条

创建滑动条createTrackbar函数 createTrackbar函数用于创建一个可调节数值的滑动条,并将滑动条附加给指定的窗口,往往会和一个回调函数来配合使用,返回当前的数值。 C++ c...

opencv c++函数 highgui模块 1 为程序界面添加滑动条

在以前的教程中 (例如 linear blending 和 brightness and contrast adjustments)你有可能注意到需要 input 一些数值到我们的程序中, 例如 和 ...

opencv学习笔记(5)---- 滑动条的创建和使用

#include #include #include using namespace std; using namespace cv; /* 关于imread函数: Mat imread(con...
  • mir_age
  • mir_age
  • 2017年06月23日 14:53
  • 65

opencv2-为程序界面添加滑动条

opencv2-为程序界面添加滑动条

OpenCv学习笔记(八)---细说HighGUI(图像用户界面)之滑动条createTrackbar()详解

(一)OpenCv中HighGUI(图形用户界面)的简述 1--OpenCv中将与操作系统,文件系统和摄像机之间的硬件交互的一些函数纳入了HighGUI (high-level graphica...

OpenCV 简单的图像混合和滑动条使用

一. 任务描述这里对OpenCV中的滑动条进行简单的使用,用滑动条来调节两张图片的混合比例二. 实验代码#include #include #include #include #include...
  • whai362
  • whai362
  • 2016年08月24日 22:48
  • 263

【OpenCV学习笔记】八、鼠标与滑动条操作

这一讲讲了两个内容: 1.鼠标操作:鼠标操作的消息回调函数setMouseCallback() 2.滑动条操作:createTrackbar() 利用这两种操作,完成了三个小的应用,见代码。 先上pp...

OpenCV2中滑动条(Trackbar)回调函数的小发现

滑动条(Track)是*OpenCV*动态调节的辅助工具,如果只有0和1两个数值,还可以作为开关。 网上有相当多的成品代码可以使用,但是介于篇幅的问题,基本上都是用全局变量这种不安全的编码方式写出来的...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:基于opencv源程序的滑动条实现阈值变换
举报原因:
原因补充:

(最多只允许输入30个字)