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)
SET(CMAKE_CXX_STANDARD 11)
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)
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() {
static int dx_add = 0;
@@ -68,7 +68,7 @@ bool ArmorFinder::sendBoxPosition() {
double dy = rect.y + rect.height/2 - 240 - 30;
double yaw = atan(dx / 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);
return true;
}

View File

@@ -36,7 +36,7 @@ void uartReceive(Uart *uart);
int main(int argc, char *argv[]) {
process_options(argc, argv);
Uart uart;
// thread receive(uartReceive, &uart);
thread receive(uartReceive, &uart);
bool flag = true;
while (flag) {
@@ -52,7 +52,7 @@ int main(int argc, char *argv[]) {
WrapperHead *video_armor;
WrapperHead *video_energy;
if (from_camera) {
video_armor = new CameraWrapper(0);
video_armor = new CameraWrapper(0, "armor");
// video_energy = new CameraWrapper(1, "energy");
} else {
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;
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/");
Energy energy(uart);
energy.setAllyColor(ally_color);
energy.setRotation(energy_part_rotation);
bool ok = true;
bool ok = video_armor->read(armor_src) /*&& video_energy->read(armor_src)*/;
while (ok) {
CNT_TIME(WORD_LIGHT_CYAN, "Total", {
@@ -88,7 +93,7 @@ int main(int argc, char *argv[]) {
imshow("armor src", armor_src);
}
CNT_TIME(WORD_LIGHT_BLUE, "Armor Time", {
armorFinder.run(armor_src);
armorFinder.run(armor_src);
});
}
if (waitKey(1) == 'q') {
@@ -104,7 +109,7 @@ int main(int argc, char *argv[]) {
return 0;
}
#define RECEIVE_LOG_LEVEL LOG_NOTHING
#define RECEIVE_LOG_LEVEL LOG_MSG
void uartReceive(Uart *uart) {
char buffer[100];

View File

@@ -5,14 +5,64 @@
#ifndef _OPTIONS_H_
#define _OPTIONS_H_
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;
#ifdef FIX_OPTIONS
#ifdef SHOW_ARMOR_BOX
#define show_armor_box true
#else
#define show_armor_box false
#endif
#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[]);

View File

@@ -72,7 +72,7 @@ stop:
CameraGetExposureTime(h_camera, &t);
LOGM("Exposure time: %lfms", t/1000.0);
// 模拟增益4
CameraSetAnalogGain(h_camera, 55);
CameraSetAnalogGain(h_camera, 60);
// 使用预设LUT表
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/"
bool save_label_error_flag = false;
int get_labelled_cnt(){
FILE *fp = fopen(SAVE_DIR"info.txt", "r");
int cnt=0;
@@ -50,18 +52,20 @@ void save_labelled_cnt(int cnt){
}
void save_labelled_image(cv::Mat &src, cv::Rect2d box){
static int cnt=get_labelled_cnt();
char name[50];
sprintf(name, SAVE_DIR"%d.jpg", cnt);
cv::imwrite(name, src);
sprintf(name, SAVE_DIR"%d.txt", cnt);
FILE *fp = fopen(name, "w");
if(fp == NULL){
LOGW("Can't create file: %s!\nStop saving!", name);
save_labelled = false;
return;
if(!save_label_error_flag) {
static int cnt = get_labelled_cnt();
char name[50];
sprintf(name, SAVE_DIR"%d.jpg", cnt);
cv::imwrite(name, src);
sprintf(name, SAVE_DIR"%d.txt", cnt);
FILE *fp = fopen(name, "w");
if (fp == NULL) {
LOGW("Can't create file: %s!\nStop saving!", name);
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 <cstring>
#ifndef FIX_OPTIONS
bool show_armor_box = false;
bool show_armor_boxes = 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 */