OpenCV:在图像上绘图

问题描述 投票:0回答:3

我正在使用 OpenCV 库开发一个程序(尽管我对此很菜鸟)。我需要做的事情之一就是在图像上绘图。我查看了 OpenCV 绘图函数,它们看起来都很简单(圆、线等),但是程序无法编译!它说的是准确的:错误 C3861:“行”:找不到标识符。 是不是有什么东西我没安装?我使用了 http://opencv.willowgarage.com/wiki/VisualC%2B%2B_VS2008 上的教程在 Visual Studio 2008 上安装 OpenCV,到目前为止,这是我遇到的唯一真正问题。 请帮我!我需要这个程序尽快运行!

image opencv drawing
3个回答
4
投票

OpenCV C API 中画线的函数名为

cvLine
,而不是
Line


1
投票

我认为您已经成为以下常见错误的受害者: C 包含在

#include <opencv/core.h>
等中,而 C++ 包括:

#include <opencv2/core/core.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <oppencv2/highgui/highgui.hpp>

包括用于绘制和显示图像的这些。然后使用

using namespace cv;
你不必写
cv::line
只需写
line
一切都会正常工作。
当我开始时,我不得不与同样的问题作斗争。 ;)

(顺便说一句,对于 c++ 使用

cv::Mat
。)


0
投票

您现在可以轻松地在 OpenCV 图像上绘画。为此,您需要调用 opencv 上的

setMouseCallback(‘window_name’,image_name)
函数。之后,您可以轻松地在图像上处理鼠标回调功能。然后您需要检测
cv2.EVENT_LBUTTONDOWN, cv2.EVENT_MOUSEMOVE and cv2.EVENT_LBUTTONUP
事件。通过检查正确的布尔条件,您需要决定如何与 OpenCV 图像交互。

def paint_draw(event,former_x,former_y,flags,param):
    global current_former_x,current_former_y,drawing, mode

    if event==cv2.EVENT_LBUTTONDOWN:
        drawing=True
        current_former_x,current_former_y=former_x,former_y

    elif event==cv2.EVENT_MOUSEMOVE:
        if drawing==True:
            if mode==True:
                cv2.line(image,(current_former_x,current_former_y),(former_x,former_y),(0,0,255),5)
                current_former_x = former_x
                current_former_y = former_y
    elif event==cv2.EVENT_LBUTTONUP:
        drawing=False
        if mode==True:
            cv2.line(image,(current_former_x,current_former_y),(former_x,former_y),(0,0,255),5)
            current_former_x = former_x
            current_former_y = former_y
    return former_x,former_y

详细信息可以查看链接:如何在 OpenCV 图像上绘画并保存图像

输出:

© www.soinside.com 2019 - 2024. All rights reserved.