资源简介
用c++配置opencv库实现的提取点特征的moravec算子,自己编写,完全可用
代码片段和文件信息
// M算子.cpp: 定义控制台应用程序的入口点。
//
#include “stdafx.h“
#include
#include“opencv2/highgui/highgui.hpp“
#include
#include
#include
using namespace std;
using namespace cv;
uchar getpix(Mat& src int x int y)
{
uchar* pt = src.ptr(y);
return pt[x];
}
void setMatpix(Mat& dst int x int y float value)
{
uchar* pt = dst.ptr(y);
pt[x] = value;
}
/*
src:输入图像
kernel:移动的窗口的大小
threshold:设置的阀值大小
*/
void Moravec(Mat& src int kernal float threshold vector* corPoint)
{
int halfKernal = kernal / 2;
//float moveValue[4] = { 0 };
float minValue;
Mat dst(src.size() CV_8UC1 Scalar(0));
//遍历图像时候,没有对图像的边缘进行处理(边缘是窗口大小一半)
for (int y = halfKernal; y < src.rows - halfKernal; y++)
{
for (int x = halfKernal; x < src.cols - halfKernal; x++)
{
float moveValue[4] = { 0 };
//对图像的每一个点在 0°、45°、90°135°的变化量
for (int win = -halfKernal; win < halfKernal; win++)
{
moveValue[0] += pow(getpix(src x + win y) - getpix(src x + win + 1 y) 2);//0°方向变化量
moveValue[1] += pow(getpix(src x + win y + win) - getpix(src x + win + 1 y + win + 1) 2);//45°方向变化量
moveValue[2] += pow(getpix(src x y + win) - getpix(src x y + win + 1) 2);//90°方向变化量
moveValue[3] += pow(getpix(src x - win y + win) - getpix(src x - win - 1 y + win + 1) 2);//135°方向变化量
}
//计算四个方向移动的最小值
minValue = moveValue[0];
minValue = minValue > moveValue[1] ? moveValue[1] : minValue;
minValue = minV
- 上一篇:FCFS和SJF调度算法C++
- 下一篇:数据结构——迷宫
相关资源
- 颜色识别形状识别STM103嵌入式代码
- c++ 邮件多附件群发
- c++ 透明代理(hookproxy)
- mfc 调用redis
- FTP客户端源码(c++)
- 基于opencv的模板匹配代码
- c++ 画图(14Qt-XPS)
- c++多边形交并差运算
- VC++基于OpenGL模拟的一个3维空间模型
- c++ 虚拟摄像头
- hook,捕获所有案件,查找所有窗口,
- C语言课设计算器
- c++ 简易贪吃蛇源码
- 高精度加法(c++代码)
- C++调用百度地图案例
- 北京化工大学计算方法(C/C++)讲义
- 基于VC++的SolidWorks二次开发SolidWorks
- c++ 模拟鼠标按键
- OFD编辑器
- opencv图片扫描以及校正
- Beginning C++17 From Novice to Professional
- C++ STL实现
- opencv手部轮廓识别以及轨迹识别
- 百度C++编码规范
- C++ sql2008 WebServer通讯.docx
- c++ 定时关机程序源码
- opencv2 3D标定.cpp
- 基于VSCode和CMake实现C++开发
- c++语法查询工具
- c++ 账务系统源码
评论
共有 条评论