OpenCV:绘制图像

时间:2010-08-25 10:46:51

标签: image drawing opencv vision

我正在使用OpenCV库开发一个程序(虽然我很喜欢它)。我需要做的一件事就是画上图像。我查看了OpenCV绘图函数,它们看起来都非常简单(Circle,Line等),但程序无法编译!它确切地说这是:错误C3861:'Line':找不到标识符。 有没有我没有安装的东西?我使用http://opencv.willowgarage.com/wiki/VisualC%2B%2B_VS2008上的教程在Visual Studio 2008上安装OpenCV,到目前为止这是我唯一真正的问题。 请帮我!我需要这个程序尽快运作!

3 个答案:

答案 0 :(得分:4)

在OpenCV C API中绘制线条的函数名为cvLine,而不是Line

答案 1 :(得分: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::lineline,一切都会正常工作 我开始时不得不与同样的问题作斗争。 ;)

(顺便说一下,对{c>使用cv::Mat。)

答案 2 :(得分: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

有关详细信息,请参阅链接:How to Paint on OpenCV Images and Save the Image

输出:

enter image description here