是否可以在图像上绘制一条线,其厚度小于图像像素的大小,如下图所示?我下面的代码只允许我画一条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);
[已编辑]解决方案:
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);
答案 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
对缩放的绘图进行缩减采样。