Merge remote-tracking branch 'origin/master'

This commit is contained in:
sun
2019-07-23 16:03:16 +08:00
20 changed files with 26924 additions and 26919 deletions

View File

@@ -20,6 +20,9 @@
#define BOX_RED ENEMY_RED #define BOX_RED ENEMY_RED
#define BOX_BLUE ENEMY_BLUE #define BOX_BLUE ENEMY_BLUE
#define IMAGE_CENTER_X (320)
#define IMAGE_CENTER_Y (240-20)
#define DISTANCE_HEIGHT_5MM (107.0) // 单位: m*pixel #define DISTANCE_HEIGHT_5MM (107.0) // 单位: m*pixel
#define DISTANCE_HEIGHT DISTANCE_HEIGHT_5MM #define DISTANCE_HEIGHT DISTANCE_HEIGHT_5MM
@@ -40,6 +43,9 @@
extern std::map<int, string> id2name; //装甲板id到名称的map extern std::map<int, string> id2name; //装甲板id到名称的map
extern std::map<string, int> name2id; //装甲板名称到id的map extern std::map<string, int> name2id; //装甲板名称到id的map
extern std::map<string, int> prior_blue;
extern std::map<string, int> prior_red;
/******************* 灯条类定义 ***********************/ /******************* 灯条类定义 ***********************/
class LightBlob { class LightBlob {
@@ -72,11 +78,13 @@ public:
explicit ArmorBox(const cv::Rect &pos=cv::Rect2d(), const LightBlobs &blobs=LightBlobs(), uint8_t color=0, int i=0); explicit ArmorBox(const cv::Rect &pos=cv::Rect2d(), const LightBlobs &blobs=LightBlobs(), uint8_t color=0, int i=0);
double blobsDistance() const; double getBlobsDistance() const;
double lengthRatio() const;
double lengthDistanceRatio() const; double lengthDistanceRatio() const;
double getDistance() const; double getBoxDistance() const;
BoxOrientation getOrientation() const; BoxOrientation getOrientation() const;
// double
bool operator<(const ArmorBox &box) const;
}; };
typedef std::vector<ArmorBox> ArmorBoxes; typedef std::vector<ArmorBox> ArmorBoxes;

View File

@@ -12,7 +12,7 @@
void showArmorBoxes(std::string windows_name, const cv::Mat &src, const ArmorBoxes &armor_boxes); void showArmorBoxes(std::string windows_name, const cv::Mat &src, const ArmorBoxes &armor_boxes);
void showArmorBox(std::string windows_name, const cv::Mat &src, const ArmorBox &armor_box); void showArmorBox(std::string windows_name, const cv::Mat &src, const ArmorBox &armor_box);
void showLightBlobs(std::string windows_name, const cv::Mat &src, const LightBlobs &light_blobs); void showLightBlobs(std::string windows_name, const cv::Mat &src, const LightBlobs &light_blobs);
void showArmorBoxesClass(std::string window_names, const cv::Mat &src, const ArmorBoxes boxes[15]); void showArmorBoxesClass(std::string window_names, const cv::Mat &src, const ArmorBoxes &boxes);
void showTrackSearchingPos(std::string window_names, const cv::Mat &src, const cv::Rect2d pos); void showTrackSearchingPos(std::string window_names, const cv::Mat &src, const cv::Rect2d pos);
#endif /* _SHOW_IMAGES_H_ */ #endif /* _SHOW_IMAGES_H_ */

View File

@@ -6,48 +6,38 @@
#include <log.h> #include <log.h>
ArmorBox::ArmorBox(const cv::Rect &pos, const LightBlobs &blobs, uint8_t color, int i) : ArmorBox::ArmorBox(const cv::Rect &pos, const LightBlobs &blobs, uint8_t color, int i) :
rect(pos), light_blobs(blobs), box_color(color), id(i){}; rect(pos), light_blobs(blobs), box_color(color), id(i) {};
double ArmorBox::blobsDistance() const{ double ArmorBox::getBlobsDistance() const {
if(light_blobs.size() == 2){ if (light_blobs.size() == 2) {
auto &x = light_blobs[0].rect.center; auto &x = light_blobs[0].rect.center;
auto &y = light_blobs[1].rect.center; auto &y = light_blobs[1].rect.center;
return sqrt((x.x-y.x)*(x.x-y.x) + (x.y-y.y)*(x.y-y.y)); return sqrt((x.x - y.x) * (x.x - y.x) + (x.y - y.y) * (x.y - y.y));
}else{ } else {
return 0;
}
}
double ArmorBox::lengthRatio() const{
if(light_blobs.size() == 2){
return light_blobs[0].length / light_blobs[1].length < 1 ?
(light_blobs[0].length / light_blobs[1].length) :
(light_blobs[1].length / light_blobs[0].length);
}else{
return 0; return 0;
} }
} }
double ArmorBox::lengthDistanceRatio() const { double ArmorBox::lengthDistanceRatio() const {
if(light_blobs.size() == 2){ if (light_blobs.size() == 2) {
return max(light_blobs[0].length, light_blobs[1].length) return max(light_blobs[0].length, light_blobs[1].length)
/ blobsDistance(); / getBlobsDistance();
}else{ } else {
return 100; return 100;
} }
} }
double ArmorBox::getDistance() const{ double ArmorBox::getBoxDistance() const {
if(light_blobs.size() == 2 ){ if (light_blobs.size() == 2) {
return DISTANCE_HEIGHT / 2 / max(light_blobs[0].length, light_blobs[1].length); return DISTANCE_HEIGHT / 2 / max(light_blobs[0].length, light_blobs[1].length);
} else { } else {
return DISTANCE_HEIGHT / rect.height; return DISTANCE_HEIGHT / rect.height;
} }
} }
ArmorBox::BoxOrientation ArmorBox::getOrientation() const{ ArmorBox::BoxOrientation ArmorBox::getOrientation() const {
// cout << lengthDistanceRatio() << endl; // cout << lengthDistanceRatio() << endl;
if(light_blobs.size() != 2){ if (light_blobs.size() != 2) {
return UNKNOWN; return UNKNOWN;
} }
switch (id) { switch (id) {
@@ -57,9 +47,9 @@ ArmorBox::BoxOrientation ArmorBox::getOrientation() const{
case B1: case B1:
case B7: case B7:
case B8: case B8:
if(lengthDistanceRatio() < 0.24){ if (lengthDistanceRatio() < 0.24) {
return FRONT; return FRONT;
}else{ } else {
return SIDE; return SIDE;
} }
case R2: case R2:
@@ -72,10 +62,27 @@ ArmorBox::BoxOrientation ArmorBox::getOrientation() const{
case B5: case B5:
if (lengthDistanceRatio() < 0.48) { if (lengthDistanceRatio() < 0.48) {
return FRONT; return FRONT;
}else{ } else {
return SIDE; return SIDE;
} }
default: default:
return UNKNOWN; return UNKNOWN;
} }
} }
bool ArmorBox::operator<(const ArmorBox &box) const {
if (id != box.id) {
if (box_color == BOX_BLUE) {
return prior_blue[id2name[id]] < prior_blue[id2name[box.id]];
} else {
return prior_red[id2name[id]] < prior_red[id2name[box.id]];
}
} else {
auto d1 = (rect.x-IMAGE_CENTER_X)*(rect.x-IMAGE_CENTER_X)
+ (rect.y-IMAGE_CENTER_Y)*(rect.y-IMAGE_CENTER_Y);
auto d2 = (box.rect.x-IMAGE_CENTER_X)*(box.rect.x-IMAGE_CENTER_X)
+ (box.rect.y-IMAGE_CENTER_Y)*(box.rect.y-IMAGE_CENTER_Y);
return d1 < d2;
}
}

View File

@@ -35,6 +35,18 @@ std::map<string, int> name2id = { //装甲板名
{"R1", 8},{"R2", 9},{"R3", 10},{"R4", 11},{"R5", 12},{"R7", 13},{"R8", 14}, {"R1", 8},{"R2", 9},{"R3", 10},{"R4", 11},{"R5", 12},{"R7", 13},{"R8", 14},
}; };
std::map<string, int> prior_blue = {
{"B8", 0}, {"B1", 1}, {"B3", 2}, {"B4", 2}, {"B5", 2}, {"B7", 3}, {"B2", 4},
{"R8", 5}, {"R1", 6}, {"R3", 7}, {"R4", 7}, {"R5", 7}, {"R7", 8}, {"R2", 9},
{"NO", 10},
};
std::map<string, int> prior_red = {
{"R8", 0}, {"R1", 1}, {"R3", 2}, {"R4", 2}, {"R5", 2}, {"R7", 3}, {"R2", 4},
{"B8", 5}, {"B1", 6}, {"B3", 7}, {"B4", 7}, {"B5", 7}, {"B7", 8}, {"B2", 9},
{"NO", 10},
};
ArmorFinder::ArmorFinder(uint8_t &color, Serial &u, const string &paras_folder, const uint8_t &use) : ArmorFinder::ArmorFinder(uint8_t &color, Serial &u, const string &paras_folder, const uint8_t &use) :
serial(u), serial(u),
enemy_color(color), enemy_color(color),

View File

@@ -303,5 +303,9 @@ int Classifier::operator()(const cv::Mat &image) {
// cout << result << "==============" <<endl; // cout << result << "==============" <<endl;
MatrixXd::Index minRow, minCol; MatrixXd::Index minRow, minCol;
result.maxCoeff(&minRow, &minCol); result.maxCoeff(&minRow, &minCol);
return minRow; if(result(minRow, minCol) > 0.9){
return minRow;
}else{
return 0;
}
} }

View File

@@ -8,15 +8,7 @@
#include <opencv2/highgui.hpp> #include <opencv2/highgui.hpp>
#include <log.h> #include <log.h>
static string prior_blue[] = {
"B8", "B1", "B3", "B4", "B5", "B7", "B2",
"R8", "R1", "R3", "R4", "R5", "R7", "R2",
};
static string prior_red[] = {
"R8", "R1", "R3", "R4", "R5", "R7", "R2",
"B8", "B1", "B3", "B4", "B5", "B7", "B2",
};
static bool angelJudge(const LightBlob &light_blob_i, const LightBlob &light_blob_j) { static bool angelJudge(const LightBlob &light_blob_i, const LightBlob &light_blob_j) {
float angle_i = light_blob_i.rect.size.width > light_blob_i.rect.size.height ? light_blob_i.rect.angle : float angle_i = light_blob_i.rect.size.width > light_blob_i.rect.size.height ? light_blob_i.rect.angle :
@@ -76,7 +68,7 @@ static bool isCoupleLight(const LightBlob &light_blob_i, const LightBlob &light_
light_blob_j.blob_color == enemy_color && light_blob_j.blob_color == enemy_color &&
lengthRatioJudge(light_blob_i, light_blob_j) && lengthRatioJudge(light_blob_i, light_blob_j) &&
lengthJudge(light_blob_i, light_blob_j) && lengthJudge(light_blob_i, light_blob_j) &&
// heightJudge(light_blob_i, light_blob_j) && // heightJudge(light_blob_i, light_blob_j) &&
angelJudge(light_blob_i, light_blob_j) && angelJudge(light_blob_i, light_blob_j) &&
boxAngleJudge(light_blob_i, light_blob_j) && boxAngleJudge(light_blob_i, light_blob_j) &&
CuoWeiDuJudge(light_blob_i, light_blob_j); CuoWeiDuJudge(light_blob_i, light_blob_j);
@@ -94,7 +86,6 @@ bool matchArmorBoxes(const cv::Mat &src, const LightBlobs &light_blobs, ArmorBox
for (int i = 0; i < light_blobs.size() - 1; ++i) { for (int i = 0; i < light_blobs.size() - 1; ++i) {
for (int j = i + 1; j < light_blobs.size(); ++j) { for (int j = i + 1; j < light_blobs.size(); ++j) {
if (!isCoupleLight(light_blobs.at(i), light_blobs.at(j), color)) { if (!isCoupleLight(light_blobs.at(i), light_blobs.at(j), color)) {
// cout << "match fail" << endl;
continue; continue;
} }
cv::Rect2d rect_left = light_blobs.at(static_cast<unsigned long>(i)).rect.boundingRect(); cv::Rect2d rect_left = light_blobs.at(static_cast<unsigned long>(i)).rect.boundingRect();
@@ -106,7 +97,6 @@ bool matchArmorBoxes(const cv::Mat &src, const LightBlobs &light_blobs, ArmorBox
max_y = fmax(rect_left.y + rect_left.height, rect_right.y + rect_right.height) + max_y = fmax(rect_left.y + rect_left.height, rect_right.y + rect_right.height) +
0.5 * (rect_left.height + rect_right.height) / 2.0; 0.5 * (rect_left.height + rect_right.height) / 2.0;
if (min_x < 0 || max_x > src.cols || min_y < 0 || max_y > src.rows) { if (min_x < 0 || max_x > src.cols || min_y < 0 || max_y > src.rows) {
// cout << "out of range" << endl;
continue; continue;
} }
LightBlobs pair_blobs = {light_blobs.at(i), light_blobs.at(j)}; LightBlobs pair_blobs = {light_blobs.at(i), light_blobs.at(j)};
@@ -117,27 +107,20 @@ bool matchArmorBoxes(const cv::Mat &src, const LightBlobs &light_blobs, ArmorBox
); );
} }
} }
if (armor_boxes.empty()) { return !armor_boxes.empty();
return false;
}
sort(armor_boxes.begin(), armor_boxes.end(), [](ArmorBox box1, ArmorBox box2) -> bool {
return centerDistance(box1.rect) < centerDistance(box2.rect);
});
return true;
} }
bool ArmorFinder::findArmorBox(const cv::Mat &src, ArmorBox &box){ bool ArmorFinder::findArmorBox(const cv::Mat &src, ArmorBox &box) {
LightBlobs light_blobs; // 存储所有可能的灯条 LightBlobs light_blobs; // 存储所有可能的灯条
ArmorBoxes armor_boxes; // 装甲板候选区 ArmorBoxes armor_boxes; // 装甲板候选区
ArmorBoxes boxes_number[15]; // 装甲板候选区放置在对应id位置
box.rect = cv::Rect2d(0,0,0,0); box.rect = cv::Rect2d(0, 0, 0, 0);
box.id = -1; box.id = -1;
if (!findLightBlobs(src, light_blobs)) { if (!findLightBlobs(src, light_blobs)) {
return false; return false;
} }
if (show_light_blobs && src.size()==cv::Size(640, 480)) { if (show_light_blobs && src.size() == cv::Size(640, 480)) {
showLightBlobs("light_blobs", src, light_blobs); showLightBlobs("light_blobs", src, light_blobs);
cv::waitKey(1); cv::waitKey(1);
} }
@@ -146,7 +129,7 @@ bool ArmorFinder::findArmorBox(const cv::Mat &src, ArmorBox &box){
// cout << "Box fail!" << endl; // cout << "Box fail!" << endl;
return false; return false;
} }
if (show_armor_boxes && src.size()==cv::Size(640, 480)) { if (show_armor_boxes && src.size() == cv::Size(640, 480)) {
showArmorBoxes("boxes", src, armor_boxes); showArmorBoxes("boxes", src, armor_boxes);
cv::waitKey(1); cv::waitKey(1);
} }
@@ -157,40 +140,24 @@ bool ArmorFinder::findArmorBox(const cv::Mat &src, ArmorBox &box){
cv::resize(roi, roi, cv::Size(48, 36)); cv::resize(roi, roi, cv::Size(48, 36));
int c = classifier(roi); int c = classifier(roi);
armor_box.id = c; armor_box.id = c;
boxes_number[c].emplace_back(armor_box);
} }
if (enemy_color == ENEMY_BLUE) { sort(armor_boxes.begin(), armor_boxes.end());
for (auto &name : prior_blue) { if(armor_boxes[0].id != 0){
if (!boxes_number[name2id[name]].empty()) { box = armor_boxes[0];
box = boxes_number[name2id[name]][0];
break;
}
}
} else if (enemy_color == ENEMY_RED) {
for (auto &name : prior_red) {
if (!boxes_number[name2id[name]].empty()) {
box = boxes_number[name2id[name]][0];
break;
}
}
} else {
LOGE_INFO("enemy_color ERROR!");
} }
if (save_labelled_boxes) { if (save_labelled_boxes) {
for (int i = 0; i < sizeof(boxes_number) / sizeof(boxes_number[0]); i++) { for (const auto &one_box : armor_boxes) {
for (auto &armor_box : boxes_number[i]) { char filename[100];
char filename[100]; sprintf(filename, PROJECT_DIR"/armor_box_photo/%s_%d.jpg", id2name[one_box.id].data(),
sprintf(filename, PROJECT_DIR"/armor_box_photo/%s_%d.jpg", id2name[i].data(), time(nullptr) + clock());
time(nullptr) + clock()); cv::imwrite(filename, src(armor_box.rect & cv::Rect2d(0, 0, src.cols, src.rows)));
cv::imwrite(filename, src(armor_box.rect));
}
} }
} }
if (box.rect == cv::Rect2d(0, 0, 0, 0)) { if (box.rect == cv::Rect2d(0, 0, 0, 0)) {
return false; return false;
} }
if (show_armor_boxes && src.size()==cv::Size(640, 480)) { if (show_armor_boxes && src.size() == cv::Size(640, 480)) {
showArmorBoxesClass("class", src, boxes_number); showArmorBoxesClass("class", src, armor_boxes);
} }
} else { } else {
box = armor_boxes[0]; box = armor_boxes[0];

View File

@@ -128,9 +128,11 @@ bool ArmorFinder::findLightBlobs(const cv::Mat &src, LightBlobs &light_blobs) {
cv::threshold(color_channel, src_bin_light, 200, 255, CV_THRESH_BINARY); // 二值化对应通道 cv::threshold(color_channel, src_bin_light, 200, 255, CV_THRESH_BINARY); // 二值化对应通道
if(src_bin_light.empty()) return false;
imagePreProcess(src_bin_light); // 开闭运算 imagePreProcess(src_bin_light); // 开闭运算
cv::threshold(color_channel, src_bin_dim, 160, 255, CV_THRESH_BINARY); // 二值化对应通道 cv::threshold(color_channel, src_bin_dim, 160, 255, CV_THRESH_BINARY); // 二值化对应通道
if(src_bin_dim.empty()) return false;
imagePreProcess(src_bin_dim); // 开闭运算 imagePreProcess(src_bin_dim); // 开闭运算
if(src_bin_light.size() == cv::Size(640, 480) && show_light_blobs) { if(src_bin_light.size() == cv::Size(640, 480) && show_light_blobs) {

View File

@@ -47,8 +47,8 @@ bool ArmorFinder::sendBoxPosition(uint16_t shoot_delay) {
LOGM(STR_CTR(WORD_BLUE, "shoot after %dms"), shoot_delay); LOGM(STR_CTR(WORD_BLUE, "shoot after %dms"), shoot_delay);
} }
auto rect = armor_box.rect; auto rect = armor_box.rect;
double dx = rect.x + rect.width / 2 - 320; double dx = rect.x + rect.width / 2 - IMAGE_CENTER_X;
double dy = rect.y + rect.height / 2 - 240 - 20; double dy = rect.y + rect.height / 2 - IMAGE_CENTER_Y;
double yaw = atan(dx / FOCUS_PIXAL) * 180 / PI; double yaw = atan(dx / FOCUS_PIXAL) * 180 / PI;
double pitch = atan(dy / FOCUS_PIXAL) * 180 / PI; double pitch = atan(dy / FOCUS_PIXAL) * 180 / PI;
double dist = DISTANCE_HEIGHT / rect.height; double dist = DISTANCE_HEIGHT / rect.height;

View File

@@ -48,33 +48,32 @@ void showArmorBoxes(std::string windows_name, const cv::Mat &src, const ArmorBox
/************************** /**************************
* 显示多个装甲板区域及其类别 * * 显示多个装甲板区域及其类别 *
**************************/ **************************/
void showArmorBoxesClass(std::string window_names, const cv::Mat &src, const ArmorBoxes boxes[15]) { void showArmorBoxesClass(std::string window_names, const cv::Mat &src, const ArmorBoxes &boxes) {
static Mat image2show; static Mat image2show;
if (src.type() == CV_8UC1) { // 黑白图像 if (src.type() == CV_8UC1) { // 黑白图像
cvtColor(src, image2show, COLOR_GRAY2RGB); cvtColor(src, image2show, COLOR_GRAY2RGB);
} else if (src.type() == CV_8UC3) { //RGB 彩色 } else if (src.type() == CV_8UC3) { //RGB 彩色
image2show = src.clone(); image2show = src.clone();
} }
for (int i = 1; i < 15; i++) { for (const auto &box : boxes) {
if (!boxes[i].empty()) { if(box.id != 0) {
for (auto box : boxes[i]) { rectangle(image2show, box.rect, Scalar(0, 255, 0), 1);
rectangle(image2show, box.rect, Scalar(0, 255, 0), 1); drawLightBlobs(image2show, box.light_blobs);
drawLightBlobs(image2show, box.light_blobs); if (box.id == -1)
if (i == -1) putText(image2show, id2name[box.id], Point(box.rect.x + 2, box.rect.y + 2), cv::FONT_HERSHEY_TRIPLEX, 1,
putText(image2show, id2name[i], Point(box.rect.x + 2, box.rect.y + 2), cv::FONT_HERSHEY_TRIPLEX, 1, Scalar(0, 255, 0));
Scalar(0, 255, 0)); else if (1 <= box.id && box.id < 8)
else if (1 <= i && i < 8) putText(image2show, id2name[box.id], Point(box.rect.x + 2, box.rect.y + 2), cv::FONT_HERSHEY_TRIPLEX, 1,
putText(image2show, id2name[i], Point(box.rect.x + 2, box.rect.y + 2), cv::FONT_HERSHEY_TRIPLEX, 1, Scalar(255, 0, 0));
Scalar(255, 0, 0)); else if (8 <= box.id && box.id < 15)
else if (8 <= i && i < 15) putText(image2show, id2name[box.id], Point(box.rect.x + 2, box.rect.y + 2), cv::FONT_HERSHEY_TRIPLEX, 1,
putText(image2show, id2name[i], Point(box.rect.x + 2, box.rect.y + 2), cv::FONT_HERSHEY_TRIPLEX, 1, Scalar(0, 0, 255));
Scalar(0, 0, 255)); else if (box.id != 0)
else if (i != 0) LOGE_INFO("Invalid box id:%d!", box.id);
LOGE_INFO("Invalid box id:%d!", i);
}
} }
} }
imshow(window_names, image2show); imshow(window_names, image2show);
} }
/************************** /**************************
@@ -93,7 +92,7 @@ void showArmorBox(std::string windows_name, const cv::Mat &src, const ArmorBox &
drawLightBlobs(image2show, box.light_blobs); drawLightBlobs(image2show, box.light_blobs);
// static FILE *fp = fopen(PROJECT_DIR"/ratio.txt", "w"); // static FILE *fp = fopen(PROJECT_DIR"/ratio.txt", "w");
// if(box.light_blobs.size() == 2) // if(box.light_blobs.size() == 2)
// fprintf(fp, "%lf %lf %lf\n", box.light_blobs[0].length, box.light_blobs[1].length, box.blobsDistance()) // fprintf(fp, "%lf %lf %lf\n", box.light_blobs[0].length, box.light_blobs[1].length, box.getBlobsDistance())
// cout << box.lengthDistanceRatio() << endl; // cout << box.lengthDistanceRatio() << endl;
if(box.getOrientation() == ArmorBox::FRONT){ if(box.getOrientation() == ArmorBox::FRONT){
@@ -103,7 +102,7 @@ void showArmorBox(std::string windows_name, const cv::Mat &src, const ArmorBox &
}; };
char dist[5]; char dist[5];
sprintf(dist, "%.1f", box.getDistance()); sprintf(dist, "%.1f", box.getBoxDistance());
if (box.id == -1) if (box.id == -1)
putText(image2show, id2name[box.id]+" "+dist, Point(box.rect.x + 2, box.rect.y + 2), cv::FONT_HERSHEY_TRIPLEX, 1, putText(image2show, id2name[box.id]+" "+dist, Point(box.rect.x + 2, box.rect.y + 2), cv::FONT_HERSHEY_TRIPLEX, 1,
Scalar(0, 255, 0)); Scalar(0, 255, 0));

View File

@@ -30,7 +30,7 @@ using namespace std;
mcu_data mcuData = { // 单片机端回传结构体 mcu_data mcuData = { // 单片机端回传结构体
0, // 当前云台yaw角 0, // 当前云台yaw角
0, // 当前云台pitch角 0, // 当前云台pitch角
BIG_ENERGY_STATE, // 当前状态,自瞄-大符-小符 ARMOR_STATE, // 当前状态,自瞄-大符-小符
0, // 云台角度标记位 0, // 云台角度标记位
1, // 是否启用数字识别 1, // 是否启用数字识别
ENEMY_RED, // 敌方颜色 ENEMY_RED, // 敌方颜色

View File

@@ -12,18 +12,19 @@
#define CAMERA_EXPOSURE (10) #define CAMERA_EXPOSURE (10)
#endif #endif
#ifndef CAMERA_BLUE_GAIN #ifndef CAMERA_RED_GAIN
#define CAMERA_BLUE_GAIN (100) #define CAMERA_RED_GAIN (100)
#endif #endif
#ifndef CAMERA_GREEN_GAIN #ifndef CAMERA_GREEN_GAIN
#define CAMERA_GREEN_GAIN (100) #define CAMERA_GREEN_GAIN (100)
#endif #endif
#ifndef CAMERA_RED_GAIN #ifndef CAMERA_BLUE_GAIN
#define CAMERA_RED_GAIN (100) #define CAMERA_BLUE_GAIN (100)
#endif #endif
#ifndef ARMOR_CAMERA_GAIN #ifndef ARMOR_CAMERA_GAIN
#define ARMOR_CAMERA_GAIN (30) #define ARMOR_CAMERA_GAIN (30)
#endif #endif

View File

@@ -90,19 +90,24 @@ bool CameraWrapper::init() {
float hour = (tv.tv_sec % (3600 * 24)) / 3600.0; float hour = (tv.tv_sec % (3600 * 24)) / 3600.0;
if (6 <= hour && hour < 10) { if (6 <= hour && hour < 10) {
gain = 20; gain = 20;
LOGM("Set gain to morning 20");
} else if (10 <= hour && hour < 16) { } else if (10 <= hour && hour < 16) {
gain = 10; gain = 10;
LOGM("Set gain to day 10");
} else if (16 <= hour && hour < 17) { } else if (16 <= hour && hour < 17) {
gain = 20; gain = 20;
LOGM("Set gain to early evening 20");
} else if (17 <= hour && hour < 18) { } else if (17 <= hour && hour < 18) {
gain = 40; gain = 40;
LOGM("Set gain to evening 40");
} else { } else {
gain = 50; gain = 50;
LOGM("Set gain to early night 50");
} }
CameraSetAnalogGain(h_camera, gain); CameraSetAnalogGain(h_camera, gain);
#endif #endif
if (mode == 0) { if (mode == 0) {
CameraSetGain(h_camera, CAMERA_BLUE_GAIN, CAMERA_GREEN_GAIN, CAMERA_RED_GAIN); CameraSetGain(h_camera, CAMERA_RED_GAIN, CAMERA_GREEN_GAIN, CAMERA_BLUE_GAIN);
CameraSetLutMode(h_camera, LUTMODE_PRESET); CameraSetLutMode(h_camera, LUTMODE_PRESET);
} }
#endif #endif

View File

@@ -1,7 +1,7 @@
6 6
-0.20627302 1.3345714
1.6024942 0.01236759
1.7967451 -0.18127699
1.4466392 0.7574205
-0.098023266 -0.05089203
-0.006771178 2.4012232

View File

@@ -2,453 +2,453 @@
6 6
5 5
5 5
-0.10642219 -0.05775621
0.54904705 0.052757032
1.0220182 0.35487002
1.2654289 0.49009013
1.0080621 0.70237464
0.63893425 0.06959687
1.0596974 0.37091365
1.5017769 0.5724168
1.7486153 0.64626414
1.2255592 0.823981
0.7572802 0.19421972
1.1565144 0.46964616
1.2662624 0.74973726
1.3252954 0.8040456
1.1559033 0.96157426
0.22455153 0.4209511
0.46842065 0.41812173
0.6101949 0.6730145
0.6682584 0.60738176
0.1469474 0.70992714
-0.19053003 0.22032113
-0.30085373 0.35712543
-0.505979 0.44548428
-0.6151139 0.43892077
-0.7488737 0.53265566
-0.67636555 -0.3933193
-0.7467412 -0.63056195
-0.7404055 -0.81669146
-0.77479744 -0.90593624
-0.75153095 -0.5002299
-0.5121083 -0.2832971
-0.580226 -0.52142954
-0.57781655 -0.68696505
-0.6191948 -0.64325243
-0.4956569 -0.5558609
-0.5530203 -0.22643577
-0.54242903 -0.36401203
-0.58190167 -0.5613834
-0.808631 -0.6516056
-0.5255669 -0.62444466
-0.5567334 -0.39555252
-0.65943664 -0.67454755
-0.675188 -0.8231711
-0.7753057 -0.6871335
-0.5219072 -0.70200956
-0.4224288 -0.39218694
-0.4372446 -0.7445834
-0.65674895 -0.933515
-0.88619053 -0.99368495
-0.5918416 -0.70261025
0.45536855 -0.013823631
0.382092 0.5073902
-0.017086059 0.7817291
-0.4412066 1.0226386
-0.32249 1.0617846
0.5902474 0.5732516
0.4910132 1.0038185
0.02227385 1.5922852
-0.4520488 1.6203218
-0.6278883 1.3179331
0.60164636 0.9900655
0.3453617 1.4036927
0.16053873 1.6397353
-0.39892384 1.7279496
-0.4782997 1.4302387
0.56412727 0.97079396
0.5470579 1.1019586
0.33888572 1.2477633
-0.025963284 1.2426698
0.010916833 1.1214392
0.7818745 0.5423003
0.9463605 0.52748567
0.72511697 0.48496372
0.44537586 0.36311582
0.35324848 0.42032725
-0.6419165 -0.3046227
-0.347417 -0.67050505
-0.40558645 -0.7719704
-0.50654674 -0.8052483
-0.44879192 -0.6882855
-0.49447027 -0.31220776
-0.31920582 -0.7811175
-0.1661499 -0.7087123
-0.4432326 -0.7895147
-0.33963177 -0.68130714
-0.38981852 -0.2518902
-0.4906231 -0.5885615
-0.45195618 -0.8546103
-0.52474713 -0.7140298
-0.39969632 -0.6666867
-0.4819537 -0.4453234
-0.71747667 -0.4416586
-0.821255 -0.7154081
-0.8445041 -0.6925818
-0.89447993 -0.6677522
-0.859059 -0.35616052
-0.98320967 -0.35501653
-1.0902424 -0.6726119
-1.105878 -0.68769675
-1.2187494 -0.62842757
0.67084956 -1.3725175
0.9035801 -1.5217957
1.2065095 -1.1862675
1.3081064 -1.2259575
1.2326727 -0.80783904
1.0170805 -0.35887867
1.0677104 -0.43197206
1.5938762 -0.24767797
1.4207084 -0.22461967
1.3485196 -0.18439284
1.0809016 0.3327475
1.3998586 0.31740725
1.7368488 0.12340166
1.5395899 0.10036747
1.5694551 0.09243073
1.3630624 0.1255897
1.4492949 -0.20451853
1.5428637 -0.19098917
1.393225 -0.2888677
1.4149159 0.035090413
1.1494107 -0.31139487
1.2268404 -0.9209835
1.2541622 -1.0867119
0.96135026 -1.0633767
0.90241027 -0.5930046
-0.31921467 -0.60051435
-0.110522695 -0.69117045
0.09325943 -0.84309447
-0.0139649 -0.9495401
-0.028535917 -0.945704
-0.24136181 -0.60029393
0.03892438 -0.56581163
0.20345062 -0.68735415
-0.074525945 -0.8354166
-0.029405555 -0.71476316
-0.07647651 -0.5309259
-0.15445644 -0.6204371
-0.058089375 -0.64591724
-0.40588626 -0.9185123
-0.27692583 -0.6721197
-0.2698881 -0.42423296
-0.55068505 -0.5364269
-0.5919062 -0.8093723
-0.5438777 -0.83293957
-0.5993602 -0.73880523
-0.7458306 -0.4016114
-0.81796175 -0.54513323
-0.94331497 -0.8965268
-1.0076928 -1.0181656
-0.8992378 -0.7527659
1.9416478 0.14480524
3.2734282 0.7206981
4.160874 0.78395385
4.7219324 1.0231944
4.1175704 0.9017648
3.0404797 0.7707963
4.511751 0.93092805
5.663269 1.3739403
5.930972 1.3279291
4.7846756 1.1782384
3.3442042 0.89890254
4.758655 1.2685592
5.6102233 1.6308866
5.5837803 1.418666
4.3014107 1.4403371
2.793397 1.0332646
3.7502306 1.4680793
4.3392096 1.6009262
4.142601 1.4233254
2.9172728 1.3964345
1.819791 1.0441216
2.428208 1.1697494
2.3962913 1.1864024
2.0173726 0.9945595
1.0743914 0.61417496
0.26512346 1.5064232
0.3457875 1.5969807
0.58334744 1.3926713
0.40681112 1.0591375
0.40550798 0.91825753
0.29478824 2.0081184
0.732128 2.0872188
0.8325436 1.8754952
0.603493 1.5422523
0.7258464 1.247344
0.5068629 2.0846596
0.67576087 2.2763405
0.74854803 1.9036028
0.60851085 1.553792
0.77726454 1.2958013
0.3519754 2.033355
0.468439 1.9874812
0.6548478 1.4062853
0.70905083 1.120491
0.3086395 0.83186024
0.4289891 1.5755631
0.47042668 1.3845375
0.37940606 0.93933696
0.45548278 0.57893604
0.14207979 0.5571441
0.71661115 1.4655185
0.09474261 1.8634752
-0.7471369 2.026231
-1.7338398 1.8244644
-2.5905223 1.4051187
0.7082176 2.8507323
0.21243899 3.5162275
-0.6654869 3.3730195
-1.7607315 2.9482317
-2.7247927 1.9189191
0.6009304 3.7363582
0.10814533 4.0745134
-0.6752587 4.3425045
-1.7909975 3.3537076
-2.3464935 2.0561876
0.79290503 3.6351812
0.49252048 4.125218
-0.43408415 3.8194602
-1.3109739 2.8164792
-1.9383324 1.3646079
0.9131795 2.8702762
0.58063436 2.8092952
-0.065964356 2.4011676
-0.84630096 1.5515331
-1.3107594 0.66381294
0.9702296 0.13401923
1.7605543 0.14732045
1.9099594 0.1582003
1.8536079 0.067835264
1.3434014 0.27031857
1.1538997 0.036582258
1.8189181 0.18308465
1.9872671 0.46109736
2.0980296 0.39839152
1.5539708 0.45910245
0.9389947 0.10027135
1.4959635 0.34981933
1.8016711 0.27826747
1.5903975 0.39906254
1.2731018 0.3794309
0.78981453 0.26135483
1.0439569 0.27460185
1.3309318 0.20269445
1.2204188 0.30070156
0.78188473 0.44147322
0.41300166 0.2961117
0.4995686 0.18368219
0.52244127 0.21021123
0.5596004 0.16462392
0.21890602 0.15000218
0.30612093 2.6859765
0.85429645 3.0021632
1.2398238 3.01394
1.2750283 2.4108675
1.3086212 1.5131158
1.0696554 4.5529537
1.3433759 5.4647064
1.729579 5.286394
1.7326889 4.1838446
1.7986484 2.5772808
1.3991985 5.6247168
1.7318608 6.7205772
2.0507987 6.2540774
1.941499 5.0784674
1.7631179 2.9446375
1.4714234 5.741677
1.8296314 6.135581
1.9416764 5.754659
1.8468171 4.3097014
1.6414593 2.5413046
1.4085735 3.989579
1.5106102 4.2373486
1.610607 3.521303
1.5357318 2.3076034
1.1668565 1.3990483
1.3847203 0.20359534
1.9328053 0.35667506
2.0932007 0.6404796
1.6669843 0.6208532
1.3775337 0.50375503
1.6736194 0.44016907
2.307166 0.81481
2.3085163 0.9989703
2.008549 0.85232496
1.2341207 1.0849417
1.6037624 0.49346346
2.0786712 0.7731298
1.9735341 0.9253167
1.5647856 1.0390874
1.02917 1.0803151
1.3709607 0.38931438
1.4461753 0.73733467
1.256765 0.9091878
0.9555051 1.1326797
0.36569837 1.0196397
0.7852095 0.35866976
0.7917901 0.490277
0.43664944 0.80630904
0.2549527 0.72464985
-0.067954175 0.75677407
0.20057896 -1.0066528
1.3856035 -0.72088385
2.0629358 -0.468895
2.809679 -0.22459877
2.3610249 -0.32589015
0.83472407 -0.7449237
2.064841 -0.53443897
3.0214195 -0.069632836
3.401786 -0.17275462
2.7669187 -0.115256704
1.1871954 -0.6526195
2.2021434 -0.3949398
2.9477324 -0.10494384
3.2896252 -0.09957123
2.3611999 -0.05825284
0.58470565 -0.64372134
1.433704 -0.5352964
1.8206064 -0.30205387
1.6048844 -0.42795947
1.0893 -0.45195335
0.079494156 -0.7580421
0.14756773 -0.41994184
0.21510047 -0.39555734
0.17841841 -0.39226678
-0.3402442 -0.62247103
0.82796144 0.64234054
0.89763546 0.9877716
0.9589713 1.265986
0.86110723 0.9821286
0.6416584 0.92446524
1.0780864 1.104576
1.2395475 1.5452595
1.4097389 1.4943271
1.1237956 1.4068083
1.0438948 1.1567591
1.0541381 1.2415149
1.3774344 1.5626544
1.422105 1.442131
1.0753438 1.2947882
0.956809 1.1759101
0.99444 0.99910414
0.99848217 0.9684556
1.2054675 1.2198694
1.0716856 0.8756623
0.8924131 0.7126125
0.67220867 0.2546437
0.89100254 0.5126503
0.7673037 0.28521404
0.74212146 0.18061157
0.4557632 0.18082859
1.4435326 0.56712496
1.0917244 1.0759186
0.5117782 1.1681184
-0.042295564 1.1630877
-0.3919759 0.6922194
1.3343437 1.4559271
1.0884248 2.232617
0.5695666 2.430758
0.095347434 2.0839124
-0.17561129 1.2237536
1.5594242 1.9632913
1.1927198 2.813879
0.81222206 2.7948275
0.10072425 2.2447014
-0.01981995 1.2274966
1.4395866 1.919032
1.4196151 2.2767575
0.99251515 2.3724613
0.5299192 1.481649
0.3711792 0.7351229
1.7289668 0.9766956
1.5802932 1.2506158
1.4318615 1.1348236
0.9496403 0.3983699
0.90711755 -0.09858717
0.7756156 0.97807693
1.6576271 1.2268138
1.7558899 1.2677068
1.423089 1.0205381
1.063295 0.9848975
0.9460997 1.000977
1.68862 1.3509308
1.8560133 1.3568571
1.7430701 1.1751815
1.267287 1.1010654
0.8309027 1.0060537
1.4070404 1.2938229
1.6903514 1.4961469
1.5321271 1.3279467
1.0099223 1.2188194
0.26294753 0.9047933
0.86975366 1.0439234
0.8681627 1.190727
0.6666984 1.2038728
0.39146528 1.0001119
-0.17483807 0.683599
0.06906817 0.91958344
0.0685056 0.77791274
0.0048298114 0.8158958
-0.29763746 0.77876735
-0.72470987 0.79760915
-0.3025738 1.6010684
0.1441088 1.8648036
0.6175989 1.162414
0.71524495 0.504175
-0.08114317 2.148345
0.23537244 3.451968
0.65833175 3.4534569
0.748487 2.5548456
0.7920688 1.4879692
0.08497454 2.6339602
0.5255702 4.012276
0.82396054 4.105876
1.130095 3.1261115
0.9759796 1.5203846
0.31005707 1.975076
0.51547265 2.9765906
0.85156286 3.159491
0.89206517 2.1923354
0.5910351 1.1295704
0.28886735 0.4425142
0.5871289 1.092844
0.55338776 0.7189682
0.54379845 0.25389487
0.27539033 -0.020977587
1.3043873 0.4315631
2.1130838 0.64940786
2.00019 0.8832401
1.9147623 0.44527876
1.2632021 0.3800746
1.6259333 0.63964474
2.4304924 0.7302083
2.4733207 0.93777853
2.0936246 1.0661528
1.3039585 0.9291006
1.5398262 0.5023832
2.1048331 0.9112465
2.2389119 1.0377594
1.5818008 1.1231108
0.94920427 1.007795
1.1412464 0.32297188
1.5037223 0.6074
1.2156814 0.7908866
1.0366565 0.9124524
0.3966581 0.70506996
0.37856415 0.137469
0.6628915 0.5684346
0.5291198 0.54992247
0.11434809 0.5329939
-0.09481559 0.46063855

View File

@@ -1,13 +1,13 @@
12 12
-0.6611704 0.15830062
1.472362 1.568725
-0.059240177 0.08881254
0.6448027 1.0175285
-0.09498331 -0.28753418
0.07005496 -0.82295644
1.5227689 3.440072
1.6761788 -0.027290119
1.3155555 1.7602353
3.944478 -0.053196967
0.41402242 0.50724083
1.6400838 1.4722952

File diff suppressed because it is too large Load Diff

View File

@@ -1,31 +1,31 @@
30 30
-0.7973528 1.0500488
-0.16212165 0.21463038
-0.016621558 -0.29623255
-0.010184621 -0.2470353
-0.02323284 -0.8506084
-0.65347326 0.7073464
0.3813474 0.4081644
-0.01980829 -0.30700645
0.014691165 -0.58173287
0.84623796 -0.31025773
1.0044321 1.1169673
0.9791296 -0.062927835
0.09865961 0.39579812
0.32203308 -0.0046960423
0.008520375 1.043973
-0.27646253 -0.433338
-0.034938164 -0.007241968
-0.0024497542 -0.028512329
-0.035473134 -0.45259658
0.28444487 -0.16685306
-0.7223666 -0.9478554
-0.43071944 -0.24466622
-0.27131405 0.035635088
0.18943691 -0.011450472
-0.7551859 0.1443482
0.22790527 1.3252599
-0.19145727 1.6703564
0.3364544 0.005498043
0.8732161 -0.022177417
0.93184555 0.9170221

File diff suppressed because it is too large Load Diff

View File

@@ -1,16 +1,16 @@
15 15
0.74399966 1.6385392
0.65725124 0.2883683
0.28723997 0.16427001
-0.28500625 -0.81345177
-0.6551816 -0.6496752
-0.5096106 -0.24417472
0.6995224 0.17381547
0.47489655 0.39015505
-0.637414 -0.82149154
-0.14589947 -0.39306962
-0.6946489 -0.74409956
0.06361784 0.19053729
-0.9587668 -1.3803443
0.33230728 0.41052702
0.01565033 0.4867054

View File

@@ -1,452 +1,452 @@
30 30
15 15
0.01272495 0.16272877
-0.10762496 -0.023834547
0.029348347 0.08249947
0.043351036 -0.0044027483
0.014999958 -0.019219227
-0.06224802 -0.04864437
-0.023997843 -0.0420211
0.02832638 -0.018540965
-0.041784886 -0.05411031
0.0986206 0.09179929
0.071423925 -0.04741339
0.071765825 -0.015789261
-0.0512679 -0.018628957
-0.044301357 -0.06419732
-0.013093688 -0.022157382
-0.11556479 0.04625096
0.03982802 0.1986832
0.09731361 -0.07650563
0.00295955 0.018387625
-0.03545694 0.0148462225
-0.006381662 -0.04508299
0.02806398 0.0554172
0.0045560263 -0.07284652
0.05397426 0.14791857
0.03402133 -0.083226964
-0.036305163 0.006760892
-0.043878928 -0.05935091
-0.0142929 -0.080886014
0.017667498 0.039385743
-0.025763642 -0.0847435
4.463302e-34 0.0069263163
7.2691345e-34 -0.03196696
8.845337e-34 0.01013256
1.0892352e-33 -0.032188926
4.7136717e-34 0.16233398
8.0413215e-35 -0.012586584
9.200099e-34 -0.064682126
-4.0106226e-36 -0.025576388
4.1104475e-34 0.009538722
5.224466e-35 -0.0035612187
2.8301181e-34 -0.050023522
-8.116642e-34 0.1365836
-3.1305442e-34 -0.0005328691
-2.6887943e-34 -0.06617318
-2.190287e-34 -0.045051303
-1.0852689e-33 0.061549887
-3.8716697e-34 -0.10550294
-3.4582993e-34 -0.11846473
4.0845394e-34 -0.085044116
-4.580933e-34 -0.07648464
-5.545946e-34 -0.09976344
-6.0027574e-34 -0.063361704
8.783881e-34 -0.11396513
1.1282351e-33 0.09881747
2.8688931e-34 0.072895415
-6.931309e-34 0.1001737
-7.412748e-34 0.09602326
6.843897e-34 0.10059716
-1.07383705e-33 0.07525039
-4.422186e-34 0.13639598
4.9493538e-34 0.020654058
-3.3879648e-34 -0.066652246
-2.5583285e-34 -0.039416563
-9.684053e-38 0.16039056
1.1755804e-33 0.03983996
5.0118e-34 0.08086425
-6.8979133e-35 -0.041199815
5.570329e-34 -0.030748783
2.0730477e-34 -0.08831715
-6.9826827e-35 -0.042963132
1.7651477e-34 0.11820907
6.505341e-34 -0.033513658
1.1404848e-33 0.0664343
3.768194e-36 -0.081245124
-8.696617e-34 -0.054914735
1.6646721e-33 0.001670388
1.5833977e-33 0.055668928
-1.16577035e-33 -0.0028530413
1.3946439e-33 0.014236393
-1.6903357e-33 0.019184338
1.18764e-33 0.044366505
-1.4414919e-33 0.052920505
1.4874023e-33 0.15180726
-1.4271845e-33 -0.019960608
-1.5428872e-33 -0.082938366
-1.5855378e-33 -0.10717986
-1.5143901e-33 -0.057292778
1.4189191e-33 0.003225871
-1.4440388e-33 -0.084122926
1.333818e-33 0.0139896525
0.17302258 -0.0020436032
-0.027978221 -0.006192509
0.016748061 -0.0036863375
-0.059101477 0.0020851295
-0.02370323 -0.0051227165
0.055812847 -0.0035529095
-0.027396126 0.008562792
0.0083711 0.01237781
-0.019884026 -0.0054802764
-0.02066343 0.0020209148
-0.005153278 -0.0038614771
-0.010312685 0.0054162582
0.029041208 -0.0069150953
-0.050187044 -0.0055296323
-0.024670767 0.011267106
-2.6037262e-33 7.0490764e-34
-2.611591e-33 -6.7399398e-34
2.4881792e-33 -4.9047764e-34
2.7212167e-33 7.050228e-34
-2.5234833e-33 -5.8806635e-34
-2.2103461e-33 6.5705262e-34
1.9122722e-33 5.9085484e-34
9.588927e-34 6.391312e-34
2.7108281e-33 6.9758895e-34
-2.3352854e-33 -5.6511326e-34
-2.7606323e-33 -7.09377e-34
-2.5427623e-33 5.733562e-34
2.6146137e-33 6.409961e-34
2.4776098e-33 6.076347e-34
2.5404514e-33 6.648552e-34
0.06246555 -0.013502103
0.10426002 -0.003388081
-0.052243777 -0.017006276
0.017077662 -0.01942666
-0.03715354 -0.009637264
-0.018698398 -0.012159535
-0.06796197 0.019928709
0.03528635 0.048327863
0.06418046 -0.024217138
-0.000768907 -0.032126475
-0.026170308 -0.0072828024
-0.019549962 -0.016916653
0.054662388 -0.028375031
-0.044521194 0.0050425865
-0.07334332 0.08900766
0.04758694 -0.012125118
-0.08954524 -0.016410505
0.09964462 -0.030864943
-0.031682633 0.013182339
-0.015182594 -0.00825742
-0.039172467 -0.012128838
0.07632043 -0.019080356
-0.01974726 -0.0042265756
-0.08796382 0.043272212
0.087372005 -0.04572191
-0.016114255 0.0018801775
-0.025341872 -0.019396031
-0.021241697 0.04153586
0.075716406 0.045491718
-0.027058382 0.035261013
-0.015432766 0.046673574
0.0073655327 -0.12895223
-0.01209919 0.05015522
-0.041824125 -0.04565983
-0.006816338 0.0066471333
0.0045526098 0.014574898
-0.0005398891 0.18387507
0.13293515 -0.04603737
-0.014088044 -0.083058365
-0.04277335 0.060678337
-0.046146225 -0.03011581
-0.011611434 -0.06670398
-0.013375685 -0.0445074
-0.017687852 0.16655137
0.099150814 -0.07322865
0.035996642 7.96008e-34
0.016294181 7.97888e-34
-0.08048032 -7.3079965e-34
-0.041648608 -8.053143e-34
-0.012340834 7.3776367e-34
-0.024473786 -7.255422e-34
0.16153657 7.315119e-34
-0.026676055 7.020306e-34
0.04658439 -9.377367e-34
-0.052000005 -7.058283e-34
-0.026849354 -7.376981e-34
-0.03671153 1.2107495e-34
-0.03710232 7.907184e-34
0.1337519 8.676027e-34
-0.031022256 9.59765e-34
-0.01850948 0.000925122
0.01128599 0.028589142
0.090702474 0.042197347
-0.008731814 -0.0066028615
-0.00024545888 0.0045426846
-0.010025267 -0.0062362035
-0.039491266 -0.031198598
-0.020047752 -0.0022897485
0.034077633 -0.0035339524
0.019151518 -0.0004611191
-0.017094668 -0.0023085375
-0.01866218 -0.00929566
-0.017035574 0.005716741
0.005504165 -0.0047323126
-0.0069074775 -0.00885353
-0.00089758425 6.7451133e-34
-0.0016957085 -8.003538e-34
0.00025294858 1.2258558e-33
-0.002470556 -2.6536542e-34
-0.00253977 -1.3044997e-33
-0.0026819948 -4.526752e-34
-0.001282234 6.1592024e-34
-0.0027133073 -1.8158464e-34
0.0060566748 7.361022e-34
-0.0017536315 -6.193221e-34
-0.0004967247 -7.5654284e-34
-0.004892902 7.069991e-35
0.0044350573 4.7278153e-34
-0.0026093745 -7.112853e-34
0.003550591 -1.884129e-34
0.04047877 0.15349956
0.05901869 -0.029954674
0.043092217 -0.015108914
0.08706535 -0.010467359
0.077308305 0.032417156
0.044446126 -0.01968007
0.051501554 -0.012203875
0.017045613 0.00090608245
-0.056876663 -0.053976297
-0.051144525 -0.00051267043
-0.050281346 -0.01402395
-0.011186705 -0.0025398864
-0.055486917 -0.011943092
-0.0782539 0.0065778154
-0.0805333 -0.02649453
-0.043732617 7.479212e-34
-0.0068375436 6.9364448e-34
-0.03201547 6.3488367e-34
-0.059948742 7.2459625e-34
0.05957991 -6.9041467e-34
0.067795284 7.0415744e-34
-0.04184092 -7.695068e-34
0.004160195 -7.2351985e-34
0.008685335 7.1070935e-34
-0.054342967 -7.877026e-34
-0.033768225 -7.6639183e-34
0.11686653 -5.7771777e-34
0.081372775 6.869331e-34
-0.017015154 -1.0516452e-34
-0.023423227 -6.7879114e-34
8.78021e-34 9.719013e-34
8.345785e-34 1.4396088e-33
7.4883407e-34 1.4772789e-34
8.48771e-34 1.6976135e-33
8.274504e-34 1.1749124e-33
8.027745e-34 -9.5036735e-34
8.773579e-34 7.5210314e-34
8.519454e-34 1.8026641e-33
-8.11835e-34 1.1457348e-34
-7.688669e-34 -1.1445478e-33
8.082543e-34 1.1324679e-33
-7.3258576e-34 -6.0489966e-34
-8.51516e-34 6.624398e-34
7.221161e-34 -1.6466613e-33
7.827067e-34 1.4947611e-33
1.2615198e-33 -5.061896e-34
1.0976719e-33 3.6089527e-34
1.1967251e-33 -5.3224846e-34
-1.0436973e-33 -3.6417293e-34
-8.499446e-34 -3.0195633e-34
2.2683726e-34 -1.568597e-35
-1.3970104e-33 -3.729541e-34
1.5193663e-33 -3.889504e-34
1.2094788e-33 -3.6107743e-34
-1.133173e-33 1.6771871e-34
-1.2547036e-33 5.119896e-34
-1.4050951e-33 -9.368868e-34
-1.4054403e-33 -4.3732017e-34
-1.142544e-33 5.488526e-34
1.0450027e-33 4.71998e-34
7.6956433e-34 7.902915e-34
8.744477e-34 -7.379445e-34
-3.8514544e-35 -6.2173076e-34
4.8746516e-34 -7.2002363e-34
-9.3443655e-34 -7.083735e-34
-1.3859844e-34 3.04953e-34
-1.2412909e-34 6.7007646e-34
-1.6619894e-34 -6.261914e-34
-1.0620242e-33 7.785486e-34
1.4781585e-34 -8.646995e-34
-7.03722e-34 -7.704102e-34
6.034873e-34 7.103963e-34
4.964442e-34 -6.883052e-34
6.136231e-34 -8.5504e-34
8.249319e-34 -8.029752e-34
0.008318748 -6.576692e-34
0.041124124 5.7033457e-34
-0.016857537 4.7488897e-34
-0.04932119 5.4763545e-34
-0.0122754285 -6.07868e-34
0.10398687 -5.0708765e-34
-0.015096632 3.0880925e-34
-0.0022395186 -6.4660294e-34
-0.015617358 -6.3007025e-34
0.036401253 6.2004926e-34
-0.060664278 5.977345e-34
0.010920629 -6.28921e-34
0.053897887 -6.6923974e-34
-0.030621164 6.47229e-34
-0.030898456 6.158748e-34
-0.032895576 1.1060209e-33
-0.102701336 1.1701839e-33
-0.026651151 -1.0827612e-33
0.11469333 1.0497208e-33
-0.063634604 1.01542545e-33
0.06844623 -9.936034e-34
-0.018467609 -9.915712e-34
0.00821091 -9.298233e-34
-0.07843062 -1.0252064e-33
-0.0055042044 -1.0346558e-33
0.090303816 1.1442445e-33
-0.046396058 -5.988898e-34
0.075963 -1.0136893e-33
0.03063942 -1.1654587e-33
0.020872513 1.10264685e-33
-0.01299387 8.054035e-34
-0.0037207452 -5.7749884e-34
-0.0242024 5.506015e-34
0.06550928 6.3020153e-34
-0.024706954 5.827863e-34
0.014491363 6.4340706e-34
-0.011790568 -5.449072e-34
-0.0025269324 -7.6055063e-34
-0.004879747 4.060235e-34
-0.030484857 6.393211e-34
0.0600873 6.002426e-34
-0.023517173 5.909521e-34
0.03269997 6.46208e-34
0.0051519005 -5.67077e-34
-0.012163694 -4.8203203e-34
1.1904957e-33 0.00025640888
1.0479699e-33 -0.0012220445
5.779416e-34 -0.0002888928
1.1540947e-33 -0.009138465
-9.659636e-34 -0.00027672783
-1.0160334e-33 -5.9364134e-05
-8.223222e-34 5.9677557e-05
8.918577e-34 -8.612216e-06
1.0935816e-33 -0.0069963005
-9.294705e-34 0.0043387557
-1.1592887e-33 0.0011482022
9.246344e-34 -0.008351903
1.180318e-33 -0.004092872
-9.126836e-34 4.49212e-05
1.1287711e-33 0.005190737
0.026146693 5.3629643e-34
0.09916242 -8.046896e-34
-0.043090336 -5.4101875e-34
0.0017119434 5.0934524e-34
0.0016878549 6.83881e-34
-0.017987054 2.2991976e-34
-0.049805358 9.119343e-34
-0.022761522 -4.5639275e-34
0.092246346 1.1479623e-33
-0.040928245 -4.8128936e-34
0.06459246 2.587558e-35
-0.017492786 1.0500935e-33
-0.0049494132 1.0330257e-33
-0.04219089 5.4504096e-34
-0.03418938 -1.1495189e-33
-1.7006182e-33 0.0018349949
-1.4530463e-33 -0.00017659004
1.42898475e-33 0.00012941893
1.5074225e-33 0.00014033947
-1.3642416e-33 -2.030852e-06
-1.4290173e-33 -4.9632195e-07
1.4108531e-33 -0.0016331057
-1.2353524e-33 -5.8955396e-07
1.5234947e-33 -0.0016313181
-1.3775423e-33 0.00558926
1.4153025e-33 -0.008227693
1.3714305e-33 -3.0290902e-08
-1.484371e-33 0.00014086688
-1.44253985e-33 -0.00082068896
1.3046794e-33 -0.00039432498
0.044514116 0.039345495
-0.000882356 0.03332894
-0.0096916985 0.057858683
-0.04236413 0.015300324
0.091675386 0.05004808
-0.023483241 -0.005343573
0.014011558 -0.040539846
-0.004130279 -0.023146078
-0.036856808 -0.0351617
-0.033731807 -0.008433985
-0.012403026 -0.0022674818
0.002606612 -0.05095537
0.017260972 -0.01868808
0.015992519 -0.05749684
-0.015452466 0.023738932
0.07528171 0.21739239
-0.021592995 -0.036745187
-0.06897829 -0.0120780505
0.0042408453 -0.023703316
-0.027098294 -0.027326588
-0.06743852 -0.0044883685
-0.09114424 -0.039952565
-0.10261911 -0.009104491
0.10710511 0.004196217
0.049893394 -0.020719824
0.059722904 0.0070886184
0.04513747 0.0006479669
0.053101413 -0.021728422
0.041433763 -0.03568409
0.09596609 -0.025182715
0.09589958 -0.07330436
-0.025171956 -0.014850829
-0.0013778559 0.17244689
-0.016897377 0.04909864
-0.022183804 -0.08140923
-0.00023300173 -0.05265642
-0.0065004122 0.03819764
0.0055662235 -0.00028948614
-0.014621925 -0.036284473
0.0004447254 0.12982818
0.00226211 0.021579055
-0.011209562 -0.029822344
-0.0183207 -0.04703199
-0.011526959 0.015811732
0.005361926 -0.056068704
0.17491823 -1.6325956e-33
-0.018875118 -1.3688233e-33
0.03126051 -1.3164923e-33
-0.039963342 -1.297806e-33
-0.033307772 1.4242801e-33
0.0015879893 1.4188411e-33
-0.041357704 1.1670324e-33
-0.0036194928 -1.360204e-33
-0.03158664 1.5447458e-33
-0.004237409 -1.4628347e-33
-0.034398682 1.4918732e-33
-0.017561572 -1.0957585e-33
0.023918597 -1.3460679e-33
-0.0046276804 1.3960052e-33
-0.011843316 -1.3998763e-33
0.023838982 0.05311244
0.11698544 0.05787442
-0.036167253 -0.013712675
-0.019597769 -0.06693075
-0.012699235 -0.040500853
-0.012540517 0.16874559
-0.03393306 -0.054344814
-0.0059446017 -0.026046352
-0.00016750683 -0.047032118
0.0014437584 -0.045116216
-0.0015821535 -0.08736958
-0.0019046782 -0.028057555
-0.0021211132 0.14098197
-0.02051653 -0.0040409807
-0.008041249 -0.0024003675