是否可以在图像中显示检测到的线条,然后使用该图像保留线条,作为MATLAB cpselect工具中的两个图像之一?
如果我检测到如下图像中的线条:
如何在cpselect工具中显示此图像以及绘制的线条?
唯一的解决方案是在图像中使用这些线保存新图像,然后在cpselect工具中使用新的组合图像,或者有没有办法在cpselect工具中绘制线条和图像?
答案 0 :(得分:0)
在阅读cpselect工具背后的代码后,我发现cpselect的图像输入参数只接受数字或逻辑类型。对我而言,这意味着在输入cpselect的图像上显示线条的唯一方法是线条实际上是图像的一部分。
这可以通过找到构成线的所有点来完成,或者通过使用线的方程,或者通过使用诸如Bresenham's的算法来找到两个端点之间的点。一旦获得了点,就改变线点位置处的图像像素强度值。完成此操作后,可以将新图像读入cpselect工具。
对于我的项目,我决定放弃使用cpselect工具。我刚刚创建了一个包含我的图像的图形,使用绘图在图像上显示我的线条,然后使用getpts函数允许用户从图像中选择点。
I = imread('image1.png');
lines = ARRAY OF LINE ENDPOINTS IN COLUMNS OF 'y1 x1 y2 x2'
ref = figure();
imshow(I)
hold on
for k = 1:length(lines)
xy = [lines(k,2),lines(k,4); lines(k,1), lines(k,3)]
plot(xy(:,1),xy(:,2),'LineWidth',2,'Color','green');
end
[rx, ry] = getpts(ref);
虽然与使用cpselect相比,我觉得最终结果与用户一样直观,但它确实做了我想做的事。