我正在使用 OpenCV 库开发一个程序(尽管我对它很陌生)。我需要做的一件事是在图像上绘图。我查看了 OpenCV 绘图函数,它们看起来都很简单(圆、线等),但是程序无法编译!准确地说是:错误 C3861:“行”:找不到标识符。有什么我没有安装吗?我使用http://opencv.willowgarage.com/wiki/VisualC%2B%2B_VS2008上的教程在 Visual Studio 2008 上安装 OpenCV,到目前为止,这是我唯一真正遇到的问题。请帮我!我需要这个程序尽快运行!
问问题
2819 次
3 回答
4
在 OpenCV C API 中画线的函数是命名的cvLine
,而不是命名的Line
。
于 2010-08-25T10:52:09.290 回答
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;
then 你不必cv::line
只写line
,一切都会正常工作。
当我开始时,我不得不与同样的问题作斗争。;)
(顺便说一句cv::Mat
,用于c ++。)
于 2012-11-01T22:09:12.527 回答
0
您现在可以轻松地在 OpenCV 图像上绘画。为此,您需要setMouseCallback(‘window_name’,image_name)
在 opencv 上调用该函数。之后,您可以轻松地处理图像上的鼠标回调函数。然后你需要检测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 图像上绘画并保存图像
输出:
于 2018-01-15T06:09:08.553 回答