ツナドーナツ・技術メモ帳

色々なものを作る過程で分からなかったことなどを書いていきます

アニメ画像の輪郭を取る

膨張させて元画像引くと輪郭が取れるやつやりました(この方法の名称わからない)

ソースコード

#include <iostream>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>

#pragma comment(lib, "opencv_world300d.lib")

int main(int argc, char *argy[]){
	cv::Mat src_img = cv::imread("画像のパス");
	cv::Mat gray;
	cv::cvtColor(src_img, gray, CV_RGB2GRAY);

	cv::Mat dilate_img;
	cv::dilate(gray, dilate_img, cv::Mat(), cv::Point(-1, -1), 1);

	cv::Mat result = dilate_img - gray;

	cv::namedWindow("image1");
	cv::namedWindow("image2");
	cv::imshow("image1", src_img);
	cv::imshow("image2", result);
	cv::waitKey(0);

	cv::imwrite("保存先のパス", result);
	return 0;
}

f:id:iwanax:20180131215444j:plainf:id:iwanax:20180131215427j:plain

RGB成分に分解してやったらもっときれいに輪郭取れるかもしれない。