opencv学习笔记(4)----图像分割

原创 2017年01月28日 16:19:51

任务:

1.在“作业素材”中,有一张horse_hw.jpg的图片,对图片中做目标分割,生成分割后的图片(黑白图)。

2.在horse_hw.jpg图像内画一个换色的矩形框,在矩形框内用白色写上自己的名字。

3.把1和2的两张图片上下摆放到图一个输出显示框内。

实验素材:

操作步骤:

第一步:做目标分割

1.转灰度图

2.二值化灰度图

第二步:画矩形框,写文字再图片上。

1.画矩形框

2.写文字在图片上

第三步:合成图片

1.生成图片Mat

2.将两张图片一次copy到目标图片上


完整源代码:

#include <opencv2/imgproc/imgproc.hpp>
using namespace cv;
int main()
{
	//--1.读入图片
	cv::Mat image = cv::imread("../roi/horse_hw.jpg");

	//--2.转换灰度图
	cv::Mat gray;
	cv::cvtColor(image, gray, CV_RGB2GRAY);

	//--3.二值化灰度图
	cv::Mat dst;
	cv::threshold(gray, dst, 60, 255, cv::THRESH_BINARY_INV);
	//画矩形,写名字
	Point a = Point(0, 20);
	Point center = Point(200, 80);
	rectangle(image, a, center, Scalar(255, 255, 255));
	string name = "flower";
	putText(image, name, Point(20, 60), CV_FONT_HERSHEY_COMPLEX, 1, Scalar(255, 255, 255));

	//--4.显示结果(原图和结果图显示在一起)
	const int width = image.cols;
	const int height = image.rows;
	cv::Mat show_image(cv::Size(width, 2 * height), CV_8UC3);
	//将dst转换为3通道,使得show_image和dst通道数一致,或者使用convertTo()函数做操作
	cv::cvtColor(dst, dst, CV_GRAY2RGB);
	//将dst拷贝image指定位置
	dst.copyTo(show_image(cv::Rect(0, 0, width, height)));
	//将image拷贝到显示图片指定位置
	image.copyTo(show_image(cv::Rect(0, height, width, height)));
	//显示
	cv::imshow("show", show_image);
        waitKey(0);
  return 1;}



合成效果图:




版权声明:本文为博主原创文章,未经博主允许不得转载。

Opencv分水岭算法——watershed自动图像分割用法

分水岭算法是一种图像区域分割法,在分割的过程中,它会把跟临近像素间的相似性作为重要的参考依据,从而将在空间位置上相近并且灰度值相近的像素点互相连接起来构成一个封闭的轮廓,封闭性是分水岭算法的一个重要特...
  • dcrmg
  • dcrmg
  • 2016年09月11日 00:40
  • 16204

OpenCV2学习笔记(四):两种图像分割方法比较

此次研究两种图像分割法,分别是基于形态学的分水岭算法和基于图割理论的GrabCut算法。OpenCV均提供了两张算法或其变种。鉴于研究所需,记录一些知识点,开发平台为OpenCV2.4.9+Qt5.3...
  • liyuefeilong
  • liyuefeilong
  • 2015年02月23日 16:16
  • 10749

基于图割的图像分割OpenCV+MFC实现

  • 2015年03月09日 09:56
  • 62.59MB
  • 下载

Opencv均值漂移pyrMeanShiftFiltering彩色图像分割流程剖析

meanShfit均值漂移算法是一种通用的聚类算法,它的基本原理是:对于给定的一定数量样本,任选其中一个样本,以该样本为中心点划定一个圆形区域,求取该圆形区域内样本的质心,即密度最大处的点,再以该点为...
  • dcrmg
  • dcrmg
  • 2016年09月29日 23:52
  • 5866

opencv 金字塔图像分割

opencv中有封装好的cvPyrSegmentation函数,参数解释如下: PyrSegmentation 用金字塔实现图像分割 void cvPyrSegmentation( Ip...
  • abcjennifer
  • abcjennifer
  • 2012年03月28日 12:57
  • 19759

图像分割之(四)OpenCV的GrabCut函数使用和源码解读

图像分割之(四)OpenCV的GrabCut函数使用和源码解读 zouxy09@qq.com http://blog.csdn.net/zouxy09         上一文对GrabCut做...
  • zouxy09
  • zouxy09
  • 2013年01月23日 17:19
  • 59216

opencv 图像分割

图像分割指的是将数字图像细分为多个图像子区域的过程,在OpenCv中实现了三种跟图像分割相关的算法,它们分别是:分水岭分割算法、金字塔分割算法以及均值漂移分割算法。分水岭分割算法     分水岭分割...
  • xiongzhengxiang
  • xiongzhengxiang
  • 2011年04月08日 12:28
  • 9518

opencv 金字塔图像分割

我所知的opencv中分割函数:watershed(只是看看效果,不能返回每类pixel类属),cvsegmentImage,cvPyrSegmentation(返回pixel类属)Segment函数...
  • abcjennifer
  • abcjennifer
  • 2014年01月13日 10:32
  • 12559

opencv用金字塔cvPyrSegmentation实现图像分割

用金字塔实现图像分割。图像分割需要先建立一个图像金字塔,然后在Gi的像素和Gi+1的像素直接依照对应关系,建立起"父-子"关系,通过这种方式,快速初始分割可以先在金字塔高层的低分辨率图像上完成,然后逐...
  • gdut2015go
  • gdut2015go
  • 2015年06月05日 20:43
  • 1814

基于GraphCuts图割算法的图像分割----OpenCV代码与实现

部分代码与文档是早些时候收集的,出处找不到了,还请原作者看到后联系注明。   图切算法是组合图论的经典算法之一。近年来,许多学者将其应用到图像和视频分割中,取得了很好的效果。本文简单介绍了图切算法和交...
  • wangyaninglm
  • wangyaninglm
  • 2015年03月09日 10:11
  • 36552
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:opencv学习笔记(4)----图像分割
举报原因:
原因补充:

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