我正在使用OpenCV库开发一个程序(虽然我很喜欢它)。我需要做的一件事就是画上图像。我查看了OpenCV绘图函数,它们看起来都非常简单(Circle,Line等),但程序无法编译!它确切地说这是:错误C3861:'Line':找不到标识符。 有没有我没有安装的东西?我使用http://opencv.willowgarage.com/wiki/VisualC%2B%2B_VS2008上的教程在Visual Studio 2008上安装OpenCV,到目前为止这是我唯一真正的问题。 请帮我!我需要这个程序尽快运作!
答案 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::line
写line
,一切都会正常工作
我开始时不得不与同样的问题作斗争。 ;)
(顺便说一下,对{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
输出: