利用canny边缘检测,我们可以很好地得到哦一个图像的轮廓,下面是基于C++的,这是我们通过这段代码得到的结果:
#include "pch.h"#include#include #include #include using namespace cv;int main(){ // 读入一张图片 Mat srcimage = imread("C://Users//lenovo//Desktop//456.jpg"); namedWindow("青春", 0);//创建窗口 cvResizeWindow("青春", 333, 500); //创建一个333*500大小的窗口 imshow("青春", srcimage);//在创建的窗口中显示图片 Mat dstimage,edge,grayimage; dstimage.create(srcimage.size(), srcimage.type()); cvtColor(srcimage, grayimage, CV_BGR2GRAY); cvtColor(srcimage, grayimage, COLOR_BGR2GRAY); blur(grayimage,edge,Size(17,17)); Canny(edge, edge, 3, 9, 3); // 等待6000 ms后窗口自动关闭 namedWindow("canny边缘检测", 0);//创建窗口 cvResizeWindow("canny边缘检测", 333, 500); //创建一个333*500大小的窗口 imshow("canny边缘检测", edge);//在创建的窗口中显示图片 waitKey(0);//等待按键按下 return 0;
演示例程: