资源简介
配套坦克大战,小工具之地图生成,简单的直方图匹配,抛砖引玉。
代码片段和文件信息
#include
#include
using namespace cv;
using namespace std;
//统计像素值的和,判断非黑的程度(count可能溢出)
int countPix(Mat img)
{
int count = 0;
for (int i = 0; i < img.rows; i++)
{
Vec3b *p = img.ptr(i);
for (int j = 0; j < img.cols; j++)
{
count += p[j][0] + p[j][1] + p[j][2];
}
}
return count;
}
int main()
{
// 对hue通道使用30个bin对saturatoin通道使用32个bin
int h_bins = 50; int s_bins = 60;
int histSize[] = { h_bins s_bins };
// hue的取值范围从0到256 saturation取值范围从0到180
float h_ranges[] = { 0 256 };
float s_ranges[] = { 0 180 };
const float* ranges[] = { h_ranges s_ranges };
// 使用第0和第1通道
int channels[] = { 0 1 };
// 【6】创建储存直方图的 MatND 类的实例:
MatND baseHist;
MatND testHist1;
MatND testHist2;
MatND testHist3;
Mat img_hsv temp_wall_hsv temp_iron_hsv temp_grass_hsv;
Mat img = imread(“stage3.png“);
resize(img img Size(1040 832));
Mat temp_wall = imread(“objectWallSmall.png“);
resize(temp_wall temp_wall Size(40 32));
Mat temp_iron = imread(“objectIronSmall.png“);
resize(temp_iron temp_iron Size(40 32));
Mat temp_grass = imread(“objectGrassSmall.png“);
resize(temp_grass temp_grass Size(40 32));
cvtColor(temp_wall temp_wall_hsv COLOR_BGR2HSV);
cvtColor(temp_iron temp_iron_hsv COLOR_BGR2HSV);
cvtColor(temp_grass temp_grass_hsv COLOR_BGR2HSV);
calcHist(&temp_wall_hsv 1 channels Mat() testHist1 2 histSize ranges true false);
normalize(testHist1 testHist1 0 1 NORM_MINMAX -1 Mat());
calcHist(&temp_iron_hsv 1 channels Mat() testHist2 2 histSize ranges true false);
normalize(testHist2 testHist2 0 1 NORM_MINMAX -1 Mat());
calcHist(&temp_grass_hsv 1 channels Mat() testHist3 2 histSize ranges true false);
normalize(testHist3 testHist3 0 1 NORM_MINMAX -1 Mat());
for (int y = 0; y < 26; y++)
{
for (int x = 0; x < 26; x++)
{
if (countPix(img(Rect(x * 40 y * 32 40 32))) < 70000)
{
continue;
}
cvtColor(img(Rect(x*40 y*32 40 32)) img_hsv COLOR_BGR2HSV);
calcHist(&img_hsv 1 channels Mat() baseHist 2 histSize ranges true false);
normalize(baseHist baseHist 0 1 NORM_MINMAX -1 Mat());
//进行图像直方图的对比
int compare_method = 2;
double base_test1 = compareHist(baseHist testHist1 compare_method);
double base_test2 = compareHist(baseHist testHist2 compare_method);
double base_test3 = compareHist(baseHist testHist3 compare_method);
//输出结果
//printf(“匹配结果如下:wall: %f iron: %f grass: %f \n“
// base_test1 base_test2 base_test3);
if (base_test1 > 1.1)
{
cout << “setMap(“ << x << “ “ << y << “ ‘W‘“ << “);“ << endl;
}
else if (base_test2 > 1.5)
{
cout << “setMap(“ << x << “ “ << y << “ ‘I‘“ << “);“ << endl;
}
else
{
cout << “setMap(“ << x << “ “ << y << “ ‘G‘“ << “);“ << endl;
}
//imshow(“imgroi“ img(Rect(x * 40
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 3361 2018-12-20 22:13 地图生成\BattleCity.cpp
文件 3817 2018-12-05 19:14 地图生成\ob
文件 1066 2018-11-01 17:11 地图生成\ob
文件 1887 2018-11-01 17:51 地图生成\ob
文件 205265 2018-12-06 12:49 地图生成\stage1.png
文件 328505 2018-12-06 13:34 地图生成\stage2.png
文件 478324 2018-12-06 12:54 地图生成\stage3.png
目录 0 2019-01-28 09:44 地图生成
----------- --------- ---------- ----- ----
1022225 8
相关资源
- opencv_imgproc249d.dll
- opencv_highgui249d.dll
- 高级形态学变换
- QWidget加载QML界面,并通过信号槽交互
- opencv.rar
- 多端口服务器多个客户端相互聊天.
- 简单的AStar算法Demo
- 广州地铁路径模拟系统
- FCN模型实现图像分割配套资料分享.
- 用于车牌识别的字符模板,数字,字
- OpenCVForUnity
- opencv 3.1.0 自带例程介绍
- OpenCV3.3百度云链接
- OpenCV-2.4.3百度网盘地址
- 安卓坦克大战小游戏
- SURF、SIFT、ORB特征提取opencv程序
- 打印模板工具
- 图像识别检测人数
- 获取连通域(可根据面积筛选封闭图
- opencv头文件以兹互勉
- 光线跟踪算法源码
- 视频车辆识别
- 利用QT5.8与opencv3.2做的照片融合
- UE4赛车游戏.rar
- Cmake从入门到精通pdf教程
- 排课表程序拓扑排序
- 基于opencv的retinex单尺度实现
- Opencv人脸分类器训练以及人脸识别全
- opencv 鼠标框选 跟踪
- AMR-LBM-OpenMP-2D.rar
评论
共有 条评论