利用canny边缘检测,我们可以很好地得到哦一个图像的轮廓,下面是基于C++的,这是我们通过这段代码得到的结果:
#include "pch.h" #include <iostream> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include<opencv2/imgproc/imgproc.hpp> 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;
演示例程:
原文地址:https://www.cnblogs.com/geeksongs/p/10048931.html
时间: 2024-10-06 10:54:45