给我基于openCV的液滴边缘识别,并用QT实时标注的代码
时间: 2023-03-14 09:59:58 浏览: 59
我可以提供一个基于OpenCV的液滴边缘识别的代码,并使用QT来实时标注:#include <opencv2/opencv.hpp>
#include <QtCore/QObject>
#include <QtGui/QImage>using namespace cv;class LiquidEdgeDetector : public QObject
{
Q_OBJECTpublic:
LiquidEdgeDetector();
~LiquidEdgeDetector();public slots:
void detectEdges(const QImage &image);signals:
void edgesDetected(const QImage &image);private:
Mat detectEdges(const Mat &src);
};
相关问题
给我一个基于OpenCV的液滴边缘识别,并用QT实时标注的代码实现,可以编译并运行它,以获得想要的结果。
你可以参考下面的代码:#include<opencv2/opencv.hpp>
#include<QtCore/QCoreApplication>using namespace cv;int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
Mat image;
// 加载图像
image = imread("image.jpg");
// 转换为灰度
cvtColor(image,image,CV_BGR2GRAY);
// 获取边缘
Canny(image, image, 50,150,3);
// 显示图像
namedWindow("Edge Detection", WINDOW_AUTOSIZE );
imshow("Edge Detection", image);
// 标注
QString label = QInputDialog::getText(nullptr, "Label", "Enter label");
int x = QInputDialog::getInt(nullptr, "x", "Enter x");
int y = QInputDialog::getInt(nullptr, "y", "Enter y");
putText(image, label.toStdString(), Point(x, y), FONT_HERSHEY_SIMPLEX, 1.0, Scalar(255, 255, 255));
// 显示标注后的图像
namedWindow("Labeled Image",WINDOW_AUTOSIZE);
imshow("Labeled Image", image);
waitKey(0);
return a.exec();
}
给我实现基于openCV的多个液滴目标边缘识别的C++代码
我可以提供一个示例代码,用于基于OpenCV的多个液滴目标边缘识别:
#include <opencv2/opencv.hpp>
#include <iostream>using namespace cv;
using namespace std;int main()
{
// Read image
Mat image = imread("image.jpg"); // Create a gray image
Mat gray_image;
cvtColor(image, gray_image, COLOR_BGR2GRAY); // Apply Canny edge detection
Mat detected_edges;
Canny(gray_image, detected_edges, 30, 90); // Find contours
vector<vector<Point> > contours;
findContours(detected_edges, contours, RETR_EXTERNAL, CHAIN_APPROX_SIMPLE); // Draw contours
Mat contour_image(gray_image.size(), CV_8UC3);
for (int i = 0; i < contours.size(); i++)
{
drawContours(contour_image, contours, i, Scalar(0, 0, 255), 2, 8);
} // Show results
imshow("Original Image", image);
imshow("Canny Edges", detected_edges);
imshow("Contours", contour_image); waitKey(0);
return 0;
}