opencv 学习之检测角点
来源:互联网 发布:php 统计系统 编辑:程序博客网 时间:2024/05/22 01:58
主要的代码内容来自<OPencv 计算机视觉编程攻略>这本书和http://blog.csdn.net/thefutureisour/article/details/7574819这篇文章
#include <cv.h>#include <highgui.h>using namespace cv;class MorphFeatures{private://用于产生二值图像的阀值int threshold;//用于检测角点的 元素Mat cross;Mat diamond;Mat square;Mat x;public:MorphFeatures ():threshold(-1),cross(5,5,CV_8U,Scalar(0)),diamond(5,5,CV_8U,Scalar(255)),square(5,5,CV_8U,Scalar(255)),x(5,5,CV_8U,Scalar(0)){//创建十字型结构元for(int i = 0; i < 5; i++){cross.at<uchar>(2,i) = 255;cross.at<uchar>(i,2) = 255;}//创建菱形结构元:diamond.at<uchar>(0,0)= 0;diamond.at<uchar>(0,1)= 0;diamond.at<uchar>(1,0)= 0;diamond.at<uchar>(4,4)= 0;diamond.at<uchar>(3,4)= 0;diamond.at<uchar>(4,3)= 0;diamond.at<uchar>(4,0)= 0;diamond.at<uchar>(4,1)= 0;diamond.at<uchar>(3,0)= 0;diamond.at<uchar>(0,4)= 0;diamond.at<uchar>(0,3)= 0;diamond.at<uchar>(1,4)= 0;//创建X形for(int i = 0; i < 5; i++){//主对角线x.at<uchar>(i,i) = 255;//副对角线x.at<uchar>(4-i,i) = 255;}}//对图像二值化void applyThreshold(Mat &result){if(threshold>0)cv::threshold(result,result,threshold,255,THRESH_BINARY_INV);}Mat getCorners(const Mat &image){Mat result;//用十字元素膨胀dilate(image,result,cross);//用菱形元素腐蚀erode(image,result,diamond);//用X行元素膨胀Mat result2;dilate(image,result2,x);//用正方形元素腐蚀erode(result2,result2,square);//闭合运算得到角点absdiff(result2 ,result,result);applyThreshold(result);return result;}//在角点处画圆 void drawOnImage(const Mat &binary,Mat &image) { Mat_<uchar>::const_iterator it = binary.begin<uchar>(); Mat_<uchar>::const_iterator itend = binary.end<uchar>(); for(int i = 0;it != itend;++it,++i) { if(!*it) circle(image,Point(i%image.step,i/image.step),5,Scalar(255,0,0)); } } };int main( int argc, char** argv ){Mat image=imread("./1.jpeg",CV_LOAD_IMAGE_GRAYSCALE);Mat image2;MorphFeatures mor;image2= mor.getCorners(image);mor.drawOnImage(image2,image);imshow("ac",image);imwrite("./2.jpeg",image);waitKey(0); return 0;}原图:
效果图:
0 0
- opencv 学习之检测角点
- opencv学习之角点检测
- Opencv学习之角点检测
- OpenCV学习之角点检测
- opencv特征检测之角点检测
- opencv学习(四十四)之图像角点检测Harris
- opencv学习之Shi-Tomasi角点检测
- opencv学习之亚像素角点检测
- OpenCV角点检测之Harris角点检测
- ★OpenCV 角点检测之Harris角点检测
- OpenCV学习——角点检测
- Opencv学习二:角点检测
- opencv学习_12 (harris角点检测)
- opencv学习_13 (trajkovic 角点检测)
- Opencv学习笔记------Harris角点检测
- OpenCV学习笔记__角点检测
- opencv角点检测学习总结
- Opencv学习笔记------Harris角点检测
- ios 视频缓冲进度条
- Android中EditText的使用总结
- 静态代码块、代码块、构造执行顺序
- Javascript变量与函数的声明与提升
- 动态初始化下拉框以及修改操作时的下拉框赋值
- opencv 学习之检测角点
- 【BZOJ 3224】普通平衡树-Splay
- Glide-加载本地图片
- 1035. 插入与归并(25)
- 非继承类的复用
- 开始写博客的计划
- Java基础之Swing图形界面聊天窗口
- 面试题16:反转链表
- TensorFlow学习笔记(1):使用softmax对手写体数字(MNIST数据集)进行识别