我是想提取图片中直线两端点坐标。配置了javacv和opencv,怎么才能在eclipse里面使用cvHoughLines2这个方法?
OpenCV中cvHoughLines2要怎么在java里面使用?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
1条回答 默认 最新
- XinHaiYe 2023-06-10 19:36关注
在Java中使用OpenCV的cvHoughLines2函数,可以通过JavaCV库来实现。JavaCV是一个基于OpenCV和其他计算机视觉库的Java接口,可以在Java中使用OpenCV的各种函数。
以下是使用JavaCV实现cvHoughLines2函数的示例代码:
import org.bytedeco.javacpp.opencv_core.*; import org.bytedeco.javacpp.opencv_imgproc.*; public class HoughLines2Example { public static void main(String[] args) { // 读取图像 Mat src = imread("input.jpg", IMREAD_GRAYSCALE); // 边缘检测 Mat edges = new Mat(); Canny(src, edges, 50, 200); // 进行霍夫直线变换 Mat lines = new Mat(); HoughLines2(edges, lines, 1, Math.PI / 180, 100); // 绘制直线 for (int i = 0; i < lines.rows(); i++) { double rho = lines.get(i, 0)[0]; double theta = lines.get(i, 0)[1]; double a = Math.cos(theta); double b = Math.sin(theta); double x0 = a * rho; double y0 = b * rho; Point pt1 = new Point(Math.round(x0 + 1000 * (-b)), Math.round(y0 + 1000 * a)); Point pt2 = new Point(Math.round(x0 - 1000 * (-b)), Math.round(y0 - 1000 * a)); line(src, pt1, pt2, new Scalar(0, 0, 255), 2, LINE_AA, 0); } // 显示结果 imshow("Hough Lines", src); waitKey(0); } }
在这个示例中,我们首先读取一张灰度图像,然后进行边缘检测。接着,我们调用cvHoughLines2函数进行霍夫直线变换,得到检测到的直线。最后,我们遍历直线数组,计算每条直线的端点坐标,并使用line函数绘制直线。最后,我们显示结果图像并等待用户按下任意键退出程序。
需要注意的是,在使用JavaCV时,我们需要使用JavaCV提供的Mat和Scalar等数据类型,而不是OpenCV原生的数据类型。此外,JavaCV的函数名和参数列表与OpenCV略有不同,需要仔细查看JavaCV的文档。
解决 无用评论 打赏 举报
悬赏问题
- ¥30 这是哪个作者做的宝宝起名网站
- ¥60 版本过低apk如何修改可以兼容新的安卓系统
- ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
- ¥50 有数据,怎么建立模型求影响全要素生产率的因素
- ¥50 有数据,怎么用matlab求全要素生产率
- ¥15 TI的insta-spin例程
- ¥15 完成下列问题完成下列问题
- ¥15 C#算法问题, 不知道怎么处理这个数据的转换
- ¥15 YoloV5 第三方库的版本对照问题
- ¥15 请完成下列相关问题!