我是opencv4android的新手,试图加载16位深度的灰度png图像。
我试过:
Mat mat2DImg = Utils.loadResource(getBaseContext(), R.drawable.image, Highgui.CV_LOAD_IMAGE_GRAYSCALE);
但是png被读取为8bit,值在[0,255]中。我尝试了CV_LOAD_IMAGE_ANYDEPTH标志,但还是一样。我试图创建一个alpha通道或将图像作为原始图像加载,但没有成功。
我还尝试在设备上复制图像,并使用imread读取,如下所示,希望imread能够加载16位通道:
java.lang.String filename = "/storage/emulated/0/image.png";
Mat mat2DImg = Highgui.imread(filename, 0);
当我检查文件时。exists()
它确实存在。返回的Mat
不为空,但为空。
有人能建议一种正确加载图像的方法吗?
使用此代码它会给你一个rgb图像
String filename = "/storage/emulated/0/image.png";
File file = new File(filename);
Mat image= Highgui.imread(filename, 0);//temp mat
Mat mat2DImg;
if (image.width() > 0) {
mat2DImg = new Mat(image.size(), image.type());
Imgproc.cvtColor(image, mat2DImg, Imgproc.COLOR_BGR2RGB);// you can use Imgproc.COLOR_BGR2GRAY to get a gray image
Log.d(TAG, "mat2DImg: " + "chans: " + image.channels() + ", ("
+ image.width() + ", " + image.height() + ")");
image.release();
image = null;
}
我只是设法通过以下方式让它发挥作用:
1) 在舱单中添加:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/ >
这消除了空图像问题。
2) 使用CV\u Load\u image\u ANYDEPTH
标志加载图像
rgbLoadedImage = Highgui.imread(filename, Highgui.CV_LOAD_IMAGE_ANYDEPTH);
值现在处于正确的16位范围内。
我想在Javascript中加载一个16位灰度PNG(其中每个像素代表一个数字/深度值。TUM使用这种文件格式来存储深度信息) 然而,opencv读取的图像。js是RGBA 8位(——我想得到CV。CV_16UC1),这似乎是因为图像是由浏览器本身解码的,如文件所示。因此,我们得到的不是一个像素,而是一个介于0和65535(2^8-1)之间的值,而是一个介于0和255(2^8-1)之间的数字,R=
我是第一次使用openCV。我正在使用openCV3和XCode对其进行编码。我想创建一个16位的灰度图像,但我想我有的数据是这样定义的,4000是像素值为白色和0为黑色。我在int类型的数组中有这些像素的信息。如何创建Mat并将数组中的值分配给Mat?
def deep(root): if not root: return print root.data deep(root.left) deep(root.right) if __name__ == '__main__': lookup(tree) deep(tree)
我有一个大问题,试图将一个大的科学图像(7MB)16位PNG图像转换为JPG,以便压缩它并检查Python中的任何最终工件。原始图像可在以下位置找到:https://postimg.cc/p5PQG8ry在这里阅读其他答案时,我尝试了枕头和OpenCV,但没有成功。我得到的唯一东西是一张白色的床单。我做错了什么?注释行是使用Python读取16位PNG图像文件的尝试,但似乎不适用于生成数据类型错误
我使用以下代码来获取灰度图像的R、G、B值(它们都将是相同的),但输出给我负值。 为什么会这样?我完全糊涂了。 此处,结果[1]应对应于“R”值。那幺它怎么会是负面的呢?
我无法理解BMP格式,我知道它应该很简单,但不知何故我遗漏了一些东西。我以为它是2个标题,后面是定义图像的实际字节,但数字加起来并不正确。 例如,我只是尝试将此BMP文件加载到内存(640x480 8bpp灰度)中,然后将其写回其他文件。据我所知,有两个不同的标头 BITMAPFILEHEADER 和 BITMAPINFOHEADER。BITMAPFILEHEADER是14个字节,BITMAPIN