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;}



合成效果图:




版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Leonis_v/article/details/54767077

编程之禅

《编程之禅》--------------------------------------------------------------------------------编程之禅Geoffrey J...
  • yemagxy
  • yemagxy
  • 2001-05-19 21:28:00
  • 867

基于OpenCV 图像分割

一、概述        从图像中将目标或部分目标分割出来,是我们在进行图像处理的操作,也是有意义的事情。在很多情况下,我们也希望将感兴趣的目标区域分割出来,比如将一个人的脸或手分割出来。具体有下面提...
  • tiemaxiaosu
  • tiemaxiaosu
  • 2016-05-19 11:26:40
  • 1925

学习opencv之(六)-图像切割,使用ROI

一.ROI介绍在OpenCV中我们能够非常方便地获取指定ROI区域的子图像。如果你对图像设置了ROI,那么,Opencv的大多数函数只在该ROI区域内运算(只处理该ROI区域),如果没设ROI的话,就...
  • qq_20777367
  • qq_20777367
  • 2017-05-15 14:44:02
  • 1332

基于OpenCV的图像分割

  • 2010年06月29日 12:49
  • 2.8MB
  • 下载

OpenCV实践之路——圆形切割和矩形切割

之前对于Opencv的学习,一直是一种查找资料然后运行别人的代码的状态。自己最多修改个变量什么的。直到上学期期末的时候才开始有意识地给自己让自己解决一些自己提出的问题。也许在大神们看来这些问题太多简单...
  • xingchenbingbuyu
  • xingchenbingbuyu
  • 2016-02-22 23:46:04
  • 6253

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

部分代码与文档是早些时候收集的,出处找不到了,还请原作者看到后联系注明。   图切算法是组合图论的经典算法之一。近年来,许多学者将其应用到图像和视频分割中,取得了很好的效果。本文简单介绍了图切算法和交...
  • wangyaninglm
  • wangyaninglm
  • 2015-03-09 10:11:17
  • 39817

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

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

opencv实现图像分割,分离前景和背景(1)

简介   如题,本篇就是讲解和使用opencv函数grabcut,来实现图像前景与背景的分离。 函数原型   1、opencv官方介绍:opencv官方grabcut介绍   2、网上童鞋翻译解释:...
  • u011630458
  • u011630458
  • 2015-05-14 17:46:33
  • 17661

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

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

OpenCV 实现的图像分割

  • 2009年06月24日 17:09
  • 240KB
  • 下载
收藏助手
不良信息举报
您举报文章:opencv学习笔记(4)----图像分割
举报原因:
原因补充:

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