是否可以在图像中显示检测到的线条,然后使用该图像,将线条保存为MATLAB cpselect工具中的两个图像之一?是否可以在cpselect图像上包含情节线?
如果我检测像下面的图像中的线:
如何可以然后与cpselect工具所绘制的线一起显示此图像?
是唯一的解决方案,使用图像中的这些线条保存新图像,然后在cpselect工具中使用新的组合图像,或者有办法在cpselect工具中将图像与图像一起绘制出来?
是否可以在图像中显示检测到的线条,然后使用该图像,将线条保存为MATLAB cpselect工具中的两个图像之一?是否可以在cpselect图像上包含情节线?
如果我检测像下面的图像中的线:
如何可以然后与cpselect工具所绘制的线一起显示此图像?
是唯一的解决方案,使用图像中的这些线条保存新图像,然后在cpselect工具中使用新的组合图像,或者有办法在cpselect工具中将图像与图像一起绘制出来?
阅读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,它没有做什么,我想为用户直观。