是否可以在厚度小于图像像素大小的图像上画一条线,就像下面的图像一样?我下面的代码仅允许我绘制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);
最佳答案
尝试使用抗锯齿线代替8连接线:line(grad,cvPoint(0,0),cvPoint(10,10),CV_RGB(255,255,255),1,CV_AA); // anti-aliased
如果还不行,您可以尝试以缩放 View (可能带有箭头)绘制线条并调整图像大小。
尝试使用带有cv::resize()
参数的INTER_AREA
对缩小的图形进行降采样。
关于opencv - 在OpenCV中画一条比像素细的线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21702659/