使用JavaCV API访问Mat的像素值
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了使用JavaCV API访问Mat的像素值,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1504字,纯文字阅读大概需要3分钟。
内容图文
![使用JavaCV API访问Mat的像素值](/upload/InfoBanner/zyjiaocheng/805/7c0666fe1f6f4a71a5b570f1b886d554.jpg)
我最近从OpenCV C API切换到JavaCV,我正在尝试执行基本操作,例如迭代Mat.我正在尝试访问Mat的像素值,但我似乎无法找到方法,而JavaCV项目缺少文档.使用OpenCV C API,我曾经使用.at()方法访问Mat的像素值.
Mat加载为CV_8UC1 Mat(灰度),如下面的代码所示,我想打印/使用像素的0-255值.
Mat image = imread("images/Text00.png", CV_8UC1);
// Make sure it was successfully loaded.
if (image == null) {
System.out.println("Image not found!");
System.exit(1);
}
System.out.println(image.rows());
System.out.println(image.cols());
for (int y = 0; y < image.rows(); y++) {
for (int x = 0; x < image.cols(); x++) {
// How to print the 0 to 255 value of each pixel in the Mat image.
}
}
类似但不适用的答案:
> How to iterate through a cvMat matrix in JavaCV?(过时,适用于CvMat)
解决方法:
关于这个,seemingly unrelated thread在JavaCV GitHub的讨论中,我在谷歌搜索一天后找到了我的问题的答案.请注意,可能有其他更有效的方法来做到这一点,但这是我目前发现的唯一方法.
解决方案由JavaCV提供的新“索引器”包表示(有关详细信息,请参阅this和this).
它的用法非常简单:在声明像DoubleIndexer idx = Mat.createIndexer()之后,你可以调用idx.get(i,j)来更容易地获取矩阵的元素.
这是我更新的代码(你可以看到,我使用了UByteBufferIndexer,因为我的Mat是CV_8UC1 Mat):
Mat image = imread("images/Text00.png", CV_8UC1);
// Make sure it was successfully loaded.
if (image == null) {
System.out.println("Image not found!");
System.exit(1);
}
UByteBufferIndexer sI = image.createIndexer();
for (int y = 0; y < image.rows(); y++) {
for (int x = 0; x < image.cols(); x++) {
System.out.println( sI.get(y, x) );
}
}
内容总结
以上是互联网集市为您收集整理的使用JavaCV API访问Mat的像素值全部内容,希望文章能够帮你解决使用JavaCV API访问Mat的像素值所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。