This commit is contained in:
xinyang
2019-05-08 20:43:29 +08:00
parent 9b3178753f
commit 13ffc6efe6
7 changed files with 98 additions and 30 deletions

View File

@@ -3,7 +3,12 @@ CMAKE_MINIMUM_REQUIRED(VERSION 3.5)
PROJECT(AutoAim) PROJECT(AutoAim)
SET(CMAKE_CXX_STANDARD 11) SET(CMAKE_CXX_STANDARD 11)
SET(CMAKE_BUILD_TYPE RELEASE) SET(CMAKE_BUILD_TYPE RELEASE)
SET(CMAKE_CXX_FLAGS "-DPATH=\"\\\"${PROJECT_SOURCE_DIR}\\\"\"") SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -O3")
SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DPATH=\"\\\"${PROJECT_SOURCE_DIR}\\\"\"")
## 使用编译期固定选项,以略微提升性能。
#SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DFIX_OPTIONS")
## 固定使用相机运行
#SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DRUN_WITH_CAMERA")
FIND_PROGRAM(CCACHE_FOUND ccache) FIND_PROGRAM(CCACHE_FOUND ccache)
IF(CCACHE_FOUND) IF(CCACHE_FOUND)

View File

@@ -57,7 +57,7 @@ void ArmorFinder::run(cv::Mat &src) {
} }
} }
#define FOCUS_PIXAL (800) #define FOCUS_PIXAL (600)
bool ArmorFinder::sendBoxPosition() { bool ArmorFinder::sendBoxPosition() {
static int dx_add = 0; static int dx_add = 0;
@@ -68,7 +68,7 @@ bool ArmorFinder::sendBoxPosition() {
double dy = rect.y + rect.height/2 - 240 - 30; double dy = rect.y + rect.height/2 - 240 - 30;
double yaw = atan(dx / FOCUS_PIXAL) * 180 / 3.14159265459; double yaw = atan(dx / FOCUS_PIXAL) * 180 / 3.14159265459;
double pitch = atan(dy / FOCUS_PIXAL) * 180 / 3.14159265459; double pitch = atan(dy / FOCUS_PIXAL) * 180 / 3.14159265459;
cout << yaw << endl; // cout << yaw << endl;
uart.sendTarget(yaw, -pitch, 0); uart.sendTarget(yaw, -pitch, 0);
return true; return true;
} }

View File

@@ -36,7 +36,7 @@ void uartReceive(Uart *uart);
int main(int argc, char *argv[]) { int main(int argc, char *argv[]) {
process_options(argc, argv); process_options(argc, argv);
Uart uart; Uart uart;
// thread receive(uartReceive, &uart); thread receive(uartReceive, &uart);
bool flag = true; bool flag = true;
while (flag) { while (flag) {
@@ -52,7 +52,7 @@ int main(int argc, char *argv[]) {
WrapperHead *video_armor; WrapperHead *video_armor;
WrapperHead *video_energy; WrapperHead *video_energy;
if (from_camera) { if (from_camera) {
video_armor = new CameraWrapper(0); video_armor = new CameraWrapper(0, "armor");
// video_energy = new CameraWrapper(1, "energy"); // video_energy = new CameraWrapper(1, "energy");
} else { } else {
video_armor = new VideoWrapper("/home/xinyang/Desktop/DataSets/video/blue_4.mp4"); video_armor = new VideoWrapper("/home/xinyang/Desktop/DataSets/video/blue_4.mp4");
@@ -63,13 +63,18 @@ int main(int argc, char *argv[]) {
} }
Mat energy_src, armor_src; Mat energy_src, armor_src;
for(int i=0; i<10; i++){
video_armor->read(armor_src);
// video_energy->read(armor_src);
}
ArmorFinder armorFinder(ENEMY_BLUE, uart, PROJECT_DIR"/tools/para/"); ArmorFinder armorFinder(ENEMY_BLUE, uart, PROJECT_DIR"/tools/para/");
Energy energy(uart); Energy energy(uart);
energy.setAllyColor(ally_color); energy.setAllyColor(ally_color);
energy.setRotation(energy_part_rotation); energy.setRotation(energy_part_rotation);
bool ok = true; bool ok = video_armor->read(armor_src) /*&& video_energy->read(armor_src)*/;
while (ok) { while (ok) {
CNT_TIME(WORD_LIGHT_CYAN, "Total", { CNT_TIME(WORD_LIGHT_CYAN, "Total", {
@@ -88,7 +93,7 @@ int main(int argc, char *argv[]) {
imshow("armor src", armor_src); imshow("armor src", armor_src);
} }
CNT_TIME(WORD_LIGHT_BLUE, "Armor Time", { CNT_TIME(WORD_LIGHT_BLUE, "Armor Time", {
armorFinder.run(armor_src); armorFinder.run(armor_src);
}); });
} }
if (waitKey(1) == 'q') { if (waitKey(1) == 'q') {
@@ -104,7 +109,7 @@ int main(int argc, char *argv[]) {
return 0; return 0;
} }
#define RECEIVE_LOG_LEVEL LOG_NOTHING #define RECEIVE_LOG_LEVEL LOG_MSG
void uartReceive(Uart *uart) { void uartReceive(Uart *uart) {
char buffer[100]; char buffer[100];

View File

@@ -5,14 +5,64 @@
#ifndef _OPTIONS_H_ #ifndef _OPTIONS_H_
#define _OPTIONS_H_ #define _OPTIONS_H_
extern bool show_armor_box; #ifdef FIX_OPTIONS
extern bool show_armor_boxes; #ifdef SHOW_ARMOR_BOX
extern bool show_light_blobs; #define show_armor_box true
extern bool show_origin; #else
extern bool save_labelled; #define show_armor_box false
extern bool run_with_camera; #endif
extern bool save_video;
extern bool collect_data; #ifdef SHOW_ARMOR_BOXES
#define show_armor_boxes true
#else
#define show_armor_boxes false
#endif
#ifdef SHOW_LIGHT_BLOBS
#define show_light_blobs true
#else
#define show_light_blobs false
#endif
#ifdef SHOW_ORIGIN
#define show_origin true
#else
#define show_origin false
#endif
#ifdef SAVE_LABELLED
#define save_labelled true
#else
#define save_labelled false
#endif
#ifdef RUN_WITH_CAMERA
#define run_with_camera true
#else
#define run_with_camera false
#endif
#ifdef SAVE_VIDEO
#define save_video true
#else
#define save_video false
#endif
#ifdef COLLECT_DATA
#define collect_data true
#else
#define collect_data false
#endif
#else /* FIX_OPTIONS */
extern bool show_armor_box;
extern bool show_armor_boxes;
extern bool show_light_blobs;
extern bool show_origin;
extern bool save_labelled;
extern bool run_with_camera;
extern bool save_video;
extern bool collect_data;
#endif /* FIX_OPTIONS */
void process_options(int argc, char *argv[]); void process_options(int argc, char *argv[]);

View File

@@ -72,7 +72,7 @@ stop:
CameraGetExposureTime(h_camera, &t); CameraGetExposureTime(h_camera, &t);
LOGM("Exposure time: %lfms", t/1000.0); LOGM("Exposure time: %lfms", t/1000.0);
// 模拟增益4 // 模拟增益4
CameraSetAnalogGain(h_camera, 55); CameraSetAnalogGain(h_camera, 60);
// 使用预设LUT表 // 使用预设LUT表
CameraSetLutMode(h_camera, LUTMODE_PRESET); CameraSetLutMode(h_camera, LUTMODE_PRESET);
// 抗频闪 // 抗频闪

View File

@@ -35,6 +35,8 @@ void save_video_file(cv::Mat &src){
#define SAVE_DIR "/home/sjturm/Desktop/labelled/" #define SAVE_DIR "/home/sjturm/Desktop/labelled/"
bool save_label_error_flag = false;
int get_labelled_cnt(){ int get_labelled_cnt(){
FILE *fp = fopen(SAVE_DIR"info.txt", "r"); FILE *fp = fopen(SAVE_DIR"info.txt", "r");
int cnt=0; int cnt=0;
@@ -50,18 +52,20 @@ void save_labelled_cnt(int cnt){
} }
void save_labelled_image(cv::Mat &src, cv::Rect2d box){ void save_labelled_image(cv::Mat &src, cv::Rect2d box){
static int cnt=get_labelled_cnt(); if(!save_label_error_flag) {
char name[50]; static int cnt = get_labelled_cnt();
sprintf(name, SAVE_DIR"%d.jpg", cnt); char name[50];
cv::imwrite(name, src); sprintf(name, SAVE_DIR"%d.jpg", cnt);
sprintf(name, SAVE_DIR"%d.txt", cnt); cv::imwrite(name, src);
FILE *fp = fopen(name, "w"); sprintf(name, SAVE_DIR"%d.txt", cnt);
if(fp == NULL){ FILE *fp = fopen(name, "w");
LOGW("Can't create file: %s!\nStop saving!", name); if (fp == NULL) {
save_labelled = false; LOGW("Can't create file: %s!\nStop saving!", name);
return; save_label_error_flag = true;
return;
}
fprintf(fp, "%lf %lf %lf %lf\n", box.x, box.y, box.width, box.height);
fclose(fp);
save_labelled_cnt(cnt);
} }
fprintf(fp, "%lf %lf %lf %lf\n", box.x, box.y, box.width, box.height);
fclose(fp);
save_labelled_cnt(cnt);
} }

View File

@@ -6,6 +6,7 @@
#include <log.h> #include <log.h>
#include <cstring> #include <cstring>
#ifndef FIX_OPTIONS
bool show_armor_box = false; bool show_armor_box = false;
bool show_armor_boxes = false; bool show_armor_boxes = false;
bool show_light_blobs = false; bool show_light_blobs = false;
@@ -66,3 +67,6 @@ void process_options(int argc, char *argv[]){
} }
} }
} }
#else
void process_options(int argc, char *argv[]){};
#endif /* FIX_OPTIONS */