-
大小: 977KB文件類型: .rar金幣: 2下載: 0 次發(fā)布日期: 2021-05-13
- 語言: 其他
- 標簽: 坦克大戰(zhàn)??OpenCV??C++??圖像處理??
資源簡介
配套坦克大戰(zhàn),小工具之地圖生成,簡單的直方圖匹配,拋磚引玉。

代碼片段和文件信息
#include?
#include?
using?namespace?cv;
using?namespace?std;
//統(tǒng)計像素值的和,判斷非黑的程度(count可能溢出)
int?countPix(Mat?img)
{
int?count?=?0;
for?(int?i?=?0;?i? {
Vec3b?*p?=?img.ptr(i);
for?(int?j?=?0;?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】創(chuàng)建儲存直方圖的?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(“?< }
else?if?(base_test2?>?1.5)
{
cout?<“setMap(“?< }
else?
{
cout?<“setMap(“?< }
//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
評論
共有 條評論