|
@@ -453,6 +453,22 @@ void DeviceTof3D::receiveFrameThread(const std::string &ip) {
|
|
|
pcl::PointCloud<pcl::PointXYZ>::Ptr t_car_cloud(new pcl::PointCloud<pcl::PointXYZ>);
|
|
|
pcl::PointCloud<pcl::PointXYZ>::Ptr t_wheel_cloud(new pcl::PointCloud<pcl::PointXYZ>);
|
|
|
std::vector<Object> segment_results;
|
|
|
+
|
|
|
+ const std::string path = ETC_PATH PROJECT_NAME "/image/";
|
|
|
+ std::vector<std::string> imagePathList;
|
|
|
+ int image_index = 0;
|
|
|
+ if (IsFile(path)) {
|
|
|
+ std::string suffix = path.substr(path.find_last_of('.') + 1);
|
|
|
+ if (suffix == "jpg" || suffix == "jpeg" || suffix == "png") {
|
|
|
+ imagePathList.push_back(path);
|
|
|
+ } else {
|
|
|
+ printf("suffix %s is wrong !!!\n", suffix.c_str());
|
|
|
+ std::abort();
|
|
|
+ }
|
|
|
+ } else if (IsFolder(path)) {
|
|
|
+ cv::glob(path + "/*.jpg", imagePathList);
|
|
|
+ }
|
|
|
+
|
|
|
while (t_iter->second.condit->is_alive()) {
|
|
|
t_iter->second.condit->wait();
|
|
|
if (t_iter->second.condit->is_alive()) {
|
|
@@ -465,17 +481,20 @@ void DeviceTof3D::receiveFrameThread(const std::string &ip) {
|
|
|
if (getDepthFrame(ip, depthFrame) == SUCCESS) {
|
|
|
segment_results.clear();
|
|
|
if (Frame2Mat(depthFrame, depthMat) == SUCCESS) {
|
|
|
- detector->detect(depthMat, segment_results);
|
|
|
- // cv::imshow("ret", depthMat);
|
|
|
- // cv::waitKey(100);
|
|
|
+ image_index = (image_index + 1) > (imagePathList.size() - 1) ? 0 : image_index + 1;
|
|
|
+ depthMat = cv::imread(imagePathList[image_index]);
|
|
|
+ detector->detect(depthMat, segment_results, depthMat);
|
|
|
+ cv::imshow("ret", depthMat);
|
|
|
+ cv::waitKey(1);
|
|
|
}
|
|
|
|
|
|
std::vector<cv::Point> mat_seg_ret;
|
|
|
for (auto &result: segment_results) {
|
|
|
+ LOG(INFO) << result.prob;
|
|
|
if (result.prob > 0.5) {
|
|
|
mat_seg_ret = detector->getPointsFromObj(result);
|
|
|
for (auto &pt: mat_seg_ret) {
|
|
|
- depthMat.at<uchar>(pt) = 255 - depthMat.at<uchar>(pt);
|
|
|
+ depthMat.at<cv::Vec3b>(pt) = cv::Vec3b(255, 255, 255) - depthMat.at<cv::Vec3b>(pt);
|
|
|
}
|
|
|
cv::imshow("ret", depthMat);
|
|
|
cv::waitKey(1);
|
|
@@ -513,14 +532,14 @@ void DeviceTof3D::receiveFrameThread(const std::string &ip) {
|
|
|
void DeviceTof3D::detectThread() {
|
|
|
LOG(INFO) << "detect thread running in " << std::this_thread::get_id();
|
|
|
|
|
|
- int view_port[2];
|
|
|
- pcl::visualization::PCLVisualizer viewer("viewer_0");
|
|
|
- viewer.createViewPort(0.0, 0.0, 0.5, 1, view_port[0]);
|
|
|
- viewer.createViewPort(0.5, 0.0, 1, 1, view_port[1]);
|
|
|
- viewer.addText("car_cloud", 10, 10, 20, 0, 1, 0, "car_cloud", view_port[0]);
|
|
|
- viewer.addText("wheel_cloud", 10, 10, 20, 0, 1, 0, "wheel_cloud", view_port[1]);
|
|
|
- viewer.addCoordinateSystem(1, "car_axis", view_port[0]);
|
|
|
- viewer.addCoordinateSystem(1, "wheel_axis", view_port[1]);
|
|
|
+ // int view_port[2];
|
|
|
+ // pcl::visualization::PCLVisualizer viewer("viewer_0");
|
|
|
+ // viewer.createViewPort(0.0, 0.0, 0.5, 1, view_port[0]);
|
|
|
+ // viewer.createViewPort(0.5, 0.0, 1, 1, view_port[1]);
|
|
|
+ // viewer.addText("car_cloud", 10, 10, 20, 0, 1, 0, "car_cloud", view_port[0]);
|
|
|
+ // viewer.addText("wheel_cloud", 10, 10, 20, 0, 1, 0, "wheel_cloud", view_port[1]);
|
|
|
+ // viewer.addCoordinateSystem(1, "car_axis", view_port[0]);
|
|
|
+ // viewer.addCoordinateSystem(1, "wheel_axis", view_port[1]);
|
|
|
|
|
|
pcl::PointCloud<pcl::PointXYZ>::Ptr t_car_cloud(new pcl::PointCloud<pcl::PointXYZ>);
|
|
|
pcl::PointCloud<pcl::PointXYZ>::Ptr t_wheel_cloud(new pcl::PointCloud<pcl::PointXYZ>);
|