我打开一个pgm文件,将其转换为numPy数组并将所有像素更改为0或1(或255,我不知道如何继续)。 如何使用openCV将其保存为.PBM?
像:
P1
512 512
0 1 0 0 0 . .
0 0 0 1 0 . .
. . . . . . .
. . . . . . .
. . . . . . .
提前致谢!
答案 0 :(得分:2)
vector<int> params;
params.push_back(CV_IMWRITE_PXM_BINARY);
params.push_back(0); // 1 for binary format, 0 for ascii format
imwrite("image.pbm", image, params); // the .pbm extension specifies the encoding format
答案 1 :(得分:1)
使用OpenCV似乎有点矫枉过正。只需打开一个文件并写入标题和图像数据即可。普通PBM效率很低。考虑使用原始PBM(幻数P4)。 例如。对于Python 2.7:
with open('image.pbm', 'wb') as fd:
fd.write("P4\n%i %i\n" % image.shape[::-1])
numpy.packbits(image, axis=-1).tofile(fd)
对于普通PBM:
with open('image.pbm', 'w') as fd:
fd.write("P1\n%i %i\n" % image.shape[::-1])
fd.write("\n".join(" ".join(str(i) for i in j) for j in image))
image
是一个2D二进制值的numpy数组。