【13】色塊提取與定位(2)

拼圖中分離指定色塊
【1】原圖
在這裏插入圖片描述
【2】結果圖
在這裏插入圖片描述
【3】代碼

#include "pch.h"
#include <opencv2/opencv.hpp>
#include <iostream>

using namespace cv;
using namespace std;

int main(int argc, char** argv)
{
	Mat image = imread("03.jpg");
	imshow("input", image);
	//Mat showImage = image.clone();
	Mat dstImage = Mat::zeros(image.rows, image.cols, CV_8UC3);
	// 色彩空間轉換
	Mat hsv, mask;
	cvtColor(image, hsv, COLOR_BGR2HSV);
	inRange(hsv, Scalar(125, 100, 46), Scalar(150, 255, 255), mask);
	imshow("mask", mask);
	//imwrite("D:/mask.png", mask);
	// 形態學開操作
	Mat se = getStructuringElement(MORPH_RECT, Size(5, 5), Point(-1, -1));
	morphologyEx(mask, mask, MORPH_OPEN, se);
	imshow("binary", mask);
	//imwrite("binary.png", mask);
	// 輪廓發現
	vector<vector<Point>> contours;
	vector<Vec4i> hiearchy;
	findContours(mask, contours, hiearchy, RETR_EXTERNAL, CHAIN_APPROX_SIMPLE);
	for (int index = 0; index < contours.size(); index++)
	{
		Scalar color(255, 0, 0);
		drawContours(dstImage, contours, index, color, FILLED, 8, hiearchy);
	}
	imshow("result", dstImage);
imwrite("result01.jpg", dstImage);
	waitKey(0);
	return 0;

}

【4】HSV模型顏色參考
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章