43 lines
1.0 KiB
C++
43 lines
1.0 KiB
C++
#include "include/main.hpp"
|
|
|
|
using namespace std;
|
|
using namespace cv;
|
|
|
|
int main(int argc, char** argv) {
|
|
// Check for invalid invocation.
|
|
if (argc != 2) {
|
|
printf("%s IMAGE\n", argv[0]);
|
|
return -1;
|
|
}
|
|
|
|
// Read in image.
|
|
cv::Mat img = img_get(argv[1]);
|
|
|
|
// Check the image actually exists.
|
|
if (img.empty()) {
|
|
std::cout << "File not found: " << argv[1] << std::endl;
|
|
return -1;
|
|
}
|
|
|
|
// Threshold the image (in case it's not already binary).
|
|
cv::Mat binimg = preprocess_threshold(img);
|
|
|
|
vector<vector<Point>> contours = bound_contours(binimg);
|
|
vector<Rect> boxes = bound_boxes(contours);
|
|
|
|
for (size_t i = 0; i < contours.size(); i++) {
|
|
rectangle(img, boxes[i], Scalar(255, 255, 255), 1);
|
|
drawContours(img, contours, (int)i, Scalar(255, 255, 255), 1, LINE_8); }
|
|
|
|
std::string label_fname = reext(argv[1]);
|
|
|
|
yolo_write_labels(label_fname, boxes);
|
|
|
|
// Show image with bounding boxes.
|
|
// imshow("Bounding Boxes", img);
|
|
// waitKey(0);
|
|
|
|
return 0;
|
|
}
|
|
|