资源简介
用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++
- 下一篇:数据结构——迷宫
相关资源
- FCFS和SJF调度算法C++
- FTP服务器C++代码实现
- C++ jpeg图像编码与解码
- 进程调度的设计与实现图形界面c++
- 家谱管理系统C++作业
- VC++异步通信的socket类
- 深度优先搜索算法C++实现
- 数据库管理系统原型开发C/C++
- BP算法程序实现包括matlab、C语言、C
- C++图书管理系统 c++
- C和C++ Windows代码移植到Linux
- 固高GT编程手册的Vc++单轴运动程序
- Kinect程序开发帮助文档C++
- MFC课设高校教师信息管理系统论文
- 指纹识别C++
- The C++ Standard Library(简体中文)
- c++ GridCtrol表格类 控件
- AES加密解密系统 VC++6.0 实现
- VC++access与excel数据的导入导出
- C/C++程序 多元多项式的相乘
- 《面向对象程序设计基础.第二版(
- opengl实现鼠标坐标的显示
- 图像处理 验证码识别C++
- 模拟洗牌与发牌程序用C++写的
- Qt图片查看器
- C++聊天程序,功能很强大,很实用
- 公司员工考勤管理系统设计
- 使用动态优先权的进程调度算法的模
- VC++关于纹理特征提取的代码完整
- 用C++语言实现首次适应算法
评论
共有 条评论