首页 > 代码库 > [OpenCV] Samples 08: edge
[OpenCV] Samples 08: edge
Canny edge detector
效率高,效果可控。
- TrackBar的使用。
- 技巧:gray找边缘后作为mask去CopyTo()。
#include "opencv2/core/utility.hpp"#include "opencv2/imgproc.hpp"#include "opencv2/imgcodecs.hpp"#include "opencv2/highgui.hpp"#include <stdio.h>using namespace cv;using namespace std;int edgeThresh = 1;Mat image, gray, edge, cedge;// define a trackbar callbackstatic void onTrackbar(int, void*){ /* Step one */ blur(gray, edge, Size(3,3)); // Run the edge detector on grayscale Canny(edge, edge, edgeThresh, edgeThresh*3, 3); cedge = Scalar::all(0); /* * Jeff --> the second parameter is mask. */ image.copyTo(cedge, edge); imshow("Edge map", cedge);}static void help(){ printf("\nThis sample demonstrates Canny edge detection\n" "Call:\n" " /.edge [image_name -- Default is ../data/fruits.jpg]\n\n");}const char* keys ={ "{help h||}{@image |../data/fruits.jpg|input image name}"};int main( int argc, const char** argv ){ CommandLineParser parser(argc, argv, keys); if (parser.has("help")) { help(); return 0; } string filename = parser.get<string>(0); image = imread(filename, 1); if(image.empty()) { printf("Cannot read image file: %s\n", filename.c_str()); help(); return -1; } cedge.create(image.size(), image.type()); cvtColor(image, gray, COLOR_BGR2GRAY); // Create a window namedWindow("Edge map", 1); // create a toolbar createTrackbar("Canny threshold", "Edge map", &edgeThresh, 100, onTrackbar); // Show the image onTrackbar(0, 0); // Wait for a key stroke; the same function arranges events processing waitKey(0); return 0;}
[OpenCV] Samples 08: edge
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。