【发布时间】:2013-03-30 17:48:03
【问题描述】:
我正在尝试将 C++ 方法从使用 OpenCV 收到的 previous answer 转换为使用 OpenCV Java 绑定的 Java
C++ 代码:
cv::Mat gray;
cv::Mat element = cv::getStructuringElement(cv::MORPH_CROSS,
cv::Size(2 * erosion_size + 1, 2 * erosion_size + 1),
cv::Point(erosion_size, erosion_size) );
cv::erode(gray, gray, element);
// Scan the image searching for points and store them in a vector
std::vector<cv::Point> points;
cv::Mat_<uchar>::iterator it = gray.begin<uchar>();
cv::Mat_<uchar>::iterator end = gray.end<uchar>();
for (; it != end; it++)
{
if (*it)
points.push_back(it.pos());
}
我不知道如何像在 C 代码中那样循环遍历 gray 变量。以下是我目前得到的:
Java 代码:
Mat gray = new Mat();
Mat element = Imgproc.getStructuringElement(
Imgproc.MORPH_CROSS, new Size(2 * erosion_size + 1, 2 * erosion_size + 1), new Point(erosion_size, erosion_size)
);
Imgproc.erode(img, gray, element);
List <Point> p = new ArrayList<Point>();
//How to loop through the gray variable?
我查看了API's,似乎Mat 确实有获取rows 和cols 的方法,但我无法在任何事情上调用Iterator..
【问题讨论】:
-
就像我之前告诉你的,使用 JavaCV。
-
@syb0rg 看起来您之前删除了答案。不要被否决票吓到。它伴随着领土。
-
@DrewDormann 我没有被吓到,它被否决了,另一个答案被接受了,这意味着 OP 没有听我的建议。如果他们愿意的话,这会让他们的生活变得更轻松......
-
@syb0rg 我在 JavaCV 的路线上尝试了袍子,但是它没有我想要的一些方法。例如
getStructuringElement。也许他们对该方法有不同的名称,但我找不到它。在经历了那种痛苦之后,我决定尝试一下 OpenCV java 绑定,因为它们至少与 C 函数有 1 对 1 的匹配。
标签: java c++ opencv image-processing javacv