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

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

任务:

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

 
 
合成效果图:




猜你喜欢

转载自blog.csdn.net/Leonis_v/article/details/54767077