canny边缘检测
来源:互联网 发布:一个网络机房多少钱 编辑:程序博客网 时间:2024/04/29 17:18
canny边缘检测
author@jason_ql
http://blog.csdn.net/lql0716
1、canny边缘检测代码
- python代码(对图片进行边缘检测)
import cv2import numpy as npimg = cv2.imread('D:/testSource/myImg/031.jpg',0)imgs = cv2.Canny(img,100,200)cv2.imshow('canny', imgs)cv2.waitKey(0)cv2.destroyAllWindows()
- C++代码(对图片进行边缘检测)
#include <opencv2/imgproc/imgproc.hpp>#include <opencv2/highgui/highgui.hpp>#include <stdlib.h>#include <stdio.h>#include <opencv2/opencv.hpp>using namespace cv;using namespace std;/// 全局变量Mat src, src_gray;Mat dst, detected_edges;int edgeThresh = 1;int lowThreshold;int const max_lowThreshold = 100;int ratio = 3;int kernel_size = 3;char* window_name = "Edge Map";void CannyThreshold(int, void*){ /// Reduce noise with a kernel 3x3 blur( src_gray, detected_edges, Size(3,3) ); /// Canny detector Canny( detected_edges, detected_edges, lowThreshold, lowThreshold*ratio, kernel_size ); dst = Scalar::all(0); src.copyTo( dst, detected_edges); imshow( window_name, dst );}int main( ){ src = imread( "/home/jason/jason2/photo/2.jpg" ); if( !src.data ) { return -1; } dst.create( src.size(), src.type() ); cvtColor( src, src_gray, CV_BGR2GRAY ); namedWindow( window_name, CV_WINDOW_AUTOSIZE ); createTrackbar( "Min Threshold:", window_name, &lowThreshold, max_lowThreshold, CannyThreshold ); CannyThreshold(0, 0); waitKey(0); return 0;}
- C++代码(读取摄像头进行边缘检测)
#include <opencv2/imgproc/imgproc.hpp>#include <opencv2/highgui/highgui.hpp>#include <stdlib.h>#include <stdio.h>#include <opencv2/opencv.hpp>using namespace cv;using namespace std;/// 全局变量Mat src, src_gray;Mat dst, detected_edges;int edgeThresh = 1;int lowThreshold;int const max_lowThreshold = 100;int ratio = 3;int kernel_size = 3;char* window_name = "Edge Map";void CannyThreshold(int, void*){ /// Reduce noise with a kernel 3x3 blur( src_gray, detected_edges, Size(3,3) ); /// Canny detector Canny( detected_edges, detected_edges, lowThreshold, lowThreshold*ratio, kernel_size ); dst = Scalar::all(0); src.copyTo( dst, detected_edges); imshow( window_name, dst );}int main( ){ cv::VideoCapture cap(0); if(!cap.isOpened()){ return -1; } cv::namedWindow(window_name,cv::WINDOW_AUTOSIZE); while(1){ char key = cv::waitKey(1); if(key == 'q'){ cv::destroyWindow("Video"); break; } cap>>src;// src = imread( "/home/jason/jason2/photo/2.jpg" ); if( !src.data ){ return -1; } dst.create( src.size(), src.type() ); cvtColor( src, src_gray, CV_BGR2GRAY ); createTrackbar( "Min Threshold:", window_name, &lowThreshold, max_lowThreshold, CannyThreshold ); CannyThreshold(0, 0); // cout<< "sqrt:" << sqrt(25) <<endl; //it means 5 // cout<< "pow:" << pow(5,2) <<endl; //it means 5*5 waitKey(0); } cap.release(); return 0;}
2、canny的C++数据结构
C++
void Canny(InputArray image, OutputArray edges, double threshold1, double threshold2, int apertureSize=3, bool L2gradient=false )
3、canny的python函数
python
cv2.Canny(image, threshold1, threshold2[, edges[, apertureSize[, L2gradient]]]) → edges
4、canny调用的相关参数
- Parameters:
- image – single-channel 8-bit input image.图像
- edges – output edge map; it has the same size and type as image .原图像canny之后的二值化图像
- threshold1 – first threshold for the hysteresis procedure.
- threshold2 – second threshold for the hysteresis procedure.
- apertureSize – aperture size for the Sobel() operator.
- L2gradient – a flag, indicating whether a more accurate
L2 norm=(dI/dx)2+(dI/dy)2−−−−−−−−−−−−−−−−√ should be used to calculate the image gradient magnitude ( L2gradient=true ), or whether the defaultL1 norm=|dI/dx|+|dI/dy| is enough ( L2gradient=false ).
- 相关文章
- OpenCV-霍夫变换
http://blog.csdn.net/lql0716/article/details/71036749- 曲率卷积核提取图像曲率
http://blog.csdn.net/lql0716/article/details/66475093
0 0
- 边缘检测:canny边缘检测
- Canny边缘检测
- canny边缘检测
- canny边缘检测算子
- Canny边缘检测
- 【OpenCV】Canny 边缘检测
- Canny边缘检测
- opencv-canny边缘检测
- Canny边缘检测理解
- Canny边缘检测算子
- Canny算法 边缘检测
- canny边缘检测
- canny 边缘检测
- canny边缘检测
- cvCanny:Canny边缘检测
- Canny 边缘检测
- opencv canny边缘检测
- openCV Canny边缘检测
- 分布式系统事务一致性解决方案
- tornado 提示缺失zlib
- http与https与socket tcp/IP与UDP 协议等
- Hadoop and Hbase and Spark
- Oracle Tablespace
- canny边缘检测
- Oracle 表空间使用率
- Oracle 正则表达式
- 简单控制台聊天例子
- python 多进程
- quilt用法
- iOS连接mysql数据库及基本操作
- Python thrift
- 2017年第一篇 仿携程机票页自动轮播和行程切换的动画