C++ OpenCV在mat图像上无法绘制圆形

3
我有一些使用cv::Mat显示的图片,我想用圆圈来突出显示某些点,如下所示。
cv::namedWindow("image_window");
cv::Mat image = cv::imread(fileLoc);

cv::imshow("image_window", image);

/*for (unsigned int b = 0; b < points.size(); b++)*/
if (points[0].num_parts() != 0)
{
    for (unsigned int c = 0; c < points[0].num_parts(); c++)
    {
        dlib::point pp = points[0].part(c);
        cv::circle(image, cv::Point(pp.x()/2 , pp.y()/2 ), 3, cv::Scalar(0, 0, 0));
        std::stringstream ss;
        ss << (c);
        /*cout << c << endl;
        cout << pp << endl;*/
        cv::putText(image, ss.str(), cv::Point(pp.x() , pp.y() ), cv::FONT_HERSHEY_PLAIN, 0.8f, cv::Scalar(0x99, 0xFF, 0xFF));

    }
}/**/

然而,除了所涉及的图片,其他内容都没有显示出来。我做错了什么,如何修复?


2
在你改变图像后,你必须再次调用 cv::imshow("image_window", image);。(紧接着是一个 cv::waitKey - Micka
1
是的。嗯,我感到有些傻哈哈。谢谢你的帮助。 - rfho_bdss
1个回答

5
尽管Micka已经回答了这个问题,但仍然没有解决:
void ShowBlackCircle( const cv::Mat & img, cv::Point cp, int radius )
{
    int t_out = 0;
    std::string win_name = "circle";
    cv::Scalar black( 0, 0, 0 );
    cv::circle( img, cp, radius, black );
    cv::imshow( win_name, img ); cv::waitKey( t_out );
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接