by Anonymous » 02 Mar 2025, 12:53
Ich arbeite an einer Erkennungssoftware, die ein gescanntes Simulink -Diagramm (in .png/.jpeg Format) als Eingabe und extrahiert strukturierte Informationen zu Blöcken, deren Eingaben und Ausgängen annimmt. Ziel ist es, eine Excel-Tabelle zu generieren, die von einem internen automatischen C-Codegenerator verwendet wird.
Bbang Block → Bbang1 , der zweite
Bbang Block → Bbang2 usw. Blöcke aus einem gescannten Simulink -Diagramm? Versucht, die Vorlagenübereinstimmung zu verwenden.
Code: Select all
#include
#include
#include
#include
#include
namespace fs = std::filesystem;
using namespace cv;
using namespace std;
// Non-Maximum Suppression (NMS)
void nonMaxSuppression(vector& detectedRegions, double overlapThreshold) {
vector indices;
sort(detectedRegions.begin(), detectedRegions.end(), [](const Rect& a, const Rect& b) {
return a.area() > b.area();
});
for (size_t i = 0; i < detectedRegions.size(); ++i) {
bool keep = true;
for (size_t j = 0; j < i; ++j) {
float intersectionArea = (detectedRegions[i] & detectedRegions[j]).area();
float unionArea = detectedRegions[i].area() + detectedRegions[j].area() - intersectionArea;
if ((intersectionArea / unionArea) > overlapThreshold) {
keep = false;
break;
}
}
if (keep) {
indices.push_back(i);
}
}
vector filteredDetections;
for (int index : indices) {
filteredDetections.push_back(detectedRegions[index]);
}
detectedRegions = filteredDetections;
}
// template matching
void detectBlocks(const string& diagramPath, const string& templateFolder, ofstream& outputFile) {
Mat inputImage = imread(diagramPath, IMREAD_GRAYSCALE);
if (inputImage.empty()) {
cout
Ich arbeite an einer Erkennungssoftware, die ein gescanntes Simulink -Diagramm (in .png/.jpeg Format) als Eingabe und extrahiert strukturierte Informationen zu Blöcken, deren Eingaben und Ausgängen annimmt. Ziel ist es, eine Excel-Tabelle zu generieren, die von einem internen automatischen C-Codegenerator verwendet wird. [b] Bbang [/b] Block → Bbang1 , der zweite [b] Bbang [/b] Block → Bbang2 usw. Blöcke aus einem gescannten Simulink -Diagramm? Versucht, die Vorlagenübereinstimmung zu verwenden.[code] #include
#include
#include
#include
#include
namespace fs = std::filesystem;
using namespace cv;
using namespace std;
// Non-Maximum Suppression (NMS)
void nonMaxSuppression(vector& detectedRegions, double overlapThreshold) {
vector indices;
sort(detectedRegions.begin(), detectedRegions.end(), [](const Rect& a, const Rect& b) {
return a.area() > b.area();
});
for (size_t i = 0; i < detectedRegions.size(); ++i) {
bool keep = true;
for (size_t j = 0; j < i; ++j) {
float intersectionArea = (detectedRegions[i] & detectedRegions[j]).area();
float unionArea = detectedRegions[i].area() + detectedRegions[j].area() - intersectionArea;
if ((intersectionArea / unionArea) > overlapThreshold) {
keep = false;
break;
}
}
if (keep) {
indices.push_back(i);
}
}
vector filteredDetections;
for (int index : indices) {
filteredDetections.push_back(detectedRegions[index]);
}
detectedRegions = filteredDetections;
}
// template matching
void detectBlocks(const string& diagramPath, const string& templateFolder, ofstream& outputFile) {
Mat inputImage = imread(diagramPath, IMREAD_GRAYSCALE);
if (inputImage.empty()) {
cout