我最近从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.
}
}
类似但不可应用的答案:
- 如何在JavaCV中迭代遍历cvMat矩阵?(过时,仅适用于CvMat)
Exception in thread "main" java.lang.ClassCastException: org.bytedeco.javacpp.indexer.UByteRawIndexer cannot be cast to org.bytedeco.javacpp.indexer.UByteBufferIndexer
,但是将UByteBufferIndexer
更改为UByteRawIndexer
后,它可以正常工作。谢谢! - MewX