2014-02-11 37 views
0

是否可以在厚度小於圖像像素大小的圖像上繪製線條,如下圖所示?我的下面的代碼只允許我繪製一個1像素厚的線。繪製比OpenCV中的像素更薄的線條

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); 
+0

不,不可能。那該怎麼辦? – berak

+0

有沒有其他的選擇?就像在放大圖像頂部的另一圖層上繪製線條一樣? – askingtoomuch

+0

你想實現什麼?一些混合像素信息,所以繪製了一條半透明線條? 爲了讓您可以在單獨的圖像上繪製線條,然後添加圖像加權(alpha混合),但僅適用於線條圖層中不是黑色(或任何其他字母顏色)的所有像素。 – Micka

回答

3

嘗試消除鋸齒線,而不是8連接線:

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

如果這也不行還你可以嘗試在縮放視圖中繪製你的線(可能y帶箭頭)並調整圖像大小。 嘗試使用cv::resize()INTER_AREA參數來縮放縮放的圖形。

+0

+1在縮放視圖中繪製的聰明想法。 – herohuyongtao

+0

它的工作原理!我已經用解決方案更新了我的問題。 – askingtoomuch