关闭

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

标签: opencvcreateTracker
256人阅读 评论(0) 收藏 举报
分类:
#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;
}

效果图:


0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

python+opencv实现阈值分割

最近老师留了几个作业,虽然用opencv很简单一句话就出来了,但是还没用python写过。在官方文档中的tutorial中的threshold里,看到可以创建两个滑动条来选择type和value,决定...
  • xieyi4650
  • xieyi4650
  • 2016-05-08 17:57
  • 2192

OpenCV图像处理篇之阈值操作函数

阈值操作类型这5种阈值操作类型保留opencv tutorials中的英文名称,依次为:Threshold Binary:即二值化,将大于阈值的灰度值设为最大灰度值,小于阈值的值设为0。Thresho...
  • xiahouzuoxin
  • xiahouzuoxin
  • 2014-11-12 17:42
  • 11645

十三种基于直方图的图像全局二值化算法原理、实现、代码及效果

图像二值化的目的是最大限度的将图象中感兴趣的部分保留下来,在很多情况下,也是进行图像分析、特征提取与模式识别之前的必要的图像预处理过程。这个看似简单的问题,在过去的四十年里受到国内外学者的广泛关注,产...
  • novocane
  • novocane
  • 2014-10-15 23:53
  • 2993

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

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

opencv 滑动条设置

  • 2014-03-23 15:23
  • 1KB
  • 下载

opencv实现视频播放时滑动条滑动

直接上程序吧: int g_slider_position = 0;//定义滑块的位置 CvCapture* g_capture = NULL;//定义一个可以包含所有文件信息的数据类型 int cu...
  • m0_37407756
  • m0_37407756
  • 2017-11-08 18:32
  • 61

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

opencv2-为程序界面添加滑动条
  • gdut2015go
  • gdut2015go
  • 2015-10-21 15:54
  • 345

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

在以前的教程中 (例如 linear blending 和 brightness and contrast adjustments)你有可能注意到需要 input 一些数值到我们的程序中, 例如 和 ...
  • android_asp
  • android_asp
  • 2013-05-03 14:44
  • 1196

opencv学习笔记——滑动条的创建和使用

#include #include "opencv2/highgui/highgui.hpp"using namespace cv;#define WINDOW_NAME "【线性混合示例】...
  • horotororensu
  • horotororensu
  • 2017-10-30 23:24
  • 70

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

#include #include #include using namespace std; using namespace cv; /* 关于imread函数: Mat imread(con...
  • mir_age
  • mir_age
  • 2017-06-23 14:53
  • 95
    个人资料
    • 访问:46498次
    • 积分:1744
    • 等级:
    • 排名:千里之外
    • 原创:130篇
    • 转载:2篇
    • 译文:1篇
    • 评论:5条
    最新评论