在OpenCV中绘制一条比像素细的线

在OpenCV中绘制一条比像素细的线,opencv,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 ); i

是否可以在厚度小于图像像素大小的图像上画一条线,如下图所示?我下面的代码只允许我画一条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(梯度,cvPoint(0,0),cvPoint(10,10),CV_RGB(255255255),1,CV_AA);//抗锯齿

如果这还不确定,您可以尝试在缩放视图中绘制线(可能带有箭头)并调整图像大小。
使用
INTER\u AREA
参数尝试
cv::resize()
对缩放的图形进行下采样。

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

line(梯度,cvPoint(0,0),cvPoint(10,10),CV_RGB(255255255),1,CV_AA);//抗锯齿

如果这还不确定,您可以尝试在缩放视图中绘制线(可能带有箭头)并调整图像大小。
使用
INTER\u AREA
参数尝试
cv::resize()
对缩放的图形进行下采样。

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

line(梯度,cvPoint(0,0),cvPoint(10,10),CV_RGB(255255255),1,CV_AA);//抗锯齿

如果这还不确定,您可以尝试在缩放视图中绘制线(可能带有箭头)并调整图像大小。
使用
INTER\u AREA
参数尝试
cv::resize()
对缩放的图形进行下采样。

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

line(梯度,cvPoint(0,0),cvPoint(10,10),CV_RGB(255255255),1,CV_AA);//抗锯齿

如果这还不确定,您可以尝试在缩放视图中绘制线(可能带有箭头)并调整图像大小。

使用
INTER\u AREA
参数尝试
cv::resize()
,对缩放的图形进行下采样。

否,不可能。那该怎么办?还有其他选择吗?比如在放大的图像上的另一层上画线?你想实现什么?一些混合像素信息,所以画一条半透明的线?为了达到这个目的,你可以在一个单独的图像上画一条线,然后添加两个图像加权(alpha混合),但只针对线层中所有非黑色(或任何其他alpha颜色)的像素。或者一条抗锯齿线,这样从一个线像素到下一个线像素的锐利边缘就不会出现?我想在像素上添加渐变方向。就像matlab中的quiver()一样。不,不可能。那该怎么办?还有其他选择吗?比如在放大的图像上的另一层上画线?你想实现什么?一些混合像素信息,所以画一条半透明的线?为了达到这个目的,你可以在一个单独的图像上画一条线,然后添加两个图像加权(alpha混合),但只针对线层中所有非黑色(或任何其他alpha颜色)的像素。或者一条抗锯齿线,这样从一个线像素到下一个线像素的锐利边缘就不会出现?我想在像素上添加渐变方向。就像matlab中的quiver()一样。不,不可能。那该怎么办?还有其他选择吗?比如在放大的图像上的另一层上画线?你想实现什么?一些混合像素信息,所以画一条半透明的线?为了达到这个目的,你可以在一个单独的图像上画一条线,然后添加两个图像加权(alpha混合),但只针对线层中所有非黑色(或任何其他alpha颜色)的像素。或者一条抗锯齿线,这样从一个线像素到下一个线像素的锐利边缘就不会出现?我想在像素上添加渐变方向。就像matlab中的quiver()一样。不,不可能。那该怎么办?还有其他选择吗?比如在放大的图像上的另一层上画线?你想实现什么?一些混合像素信息,所以画一条半透明的线?为了达到这个目的,你可以在一个单独的图像上画一条线,然后添加两个图像加权(alpha混合),但只针对线层中所有非黑色(或任何其他alpha颜色)的像素。或者一条抗锯齿线,这样从一个线像素到下一个线像素的锐利边缘就不会出现?我想在像素上添加渐变方向。就像matlab中的quiver()一样,它可以工作!我已经用解决方案更新了我的问题。它有效!我已经用解决方案更新了我的问题。它有效!我已经用解决方案更新了我的问题。它有效!我已经用解决方案更新了我的问题。