在OpenCV中画一条比像素更细的线

时间:2014-02-11 13:04:48

标签: opencv

是否可以在图像上绘制一条线,其厚度小于图像像素的大小,如下图所示?我下面的代码只允许我画一条1像素的线。

Mat image = imread(argv[1], CV_LOAD_IMAGE_GRAYSCALE);
line(image,cvPoint(0,0),cvPoint(10,10),CV_RGB(255,255,255),1,8); // Thickness = 1 (1 pixel thick)
namedWindow("Display Window", WINDOW_NORMAL );
imshow( "Display Window", image);

enter image description here

[已编辑]解决方案:

Mat image = imread(argv[1], CV_LOAD_IMAGE_GRAYSCALE);
Mat image_zoom = Mat(image.size()*10, CV_32F);   // zoom in 10 times
resize(image, image_zoom, image_zoom.size(), 0, 0, INTER_AREA);
line(draw,cvPoint(0,0),cvPoint(100,100),CV_RGB(255,255,255),1,8);
namedWindow("Display Window", WINDOW_NORMAL );
imshow( "Display Window", image_zoom);

1 个答案:

答案 0 :(得分:3)

尝试使用抗锯齿线而不是8条连线:

line(grad,cvPoint(0,0),cvPoint(10,10),CV_RGB(255,255,255),1,CV_AA); // anti-aliased

如果还不行,你可以尝试在缩放视图中绘制线条(可能带有箭头)并调整该图像的大小。 尝试使用cv::resize()参数INTER_AREA对缩放的绘图进行缩减采样。