如上图所示,当我用枕头阅读时:
from PIL import Image
label = Image.open('example.png')
print(np.unique(array(label)))
该数字在[0,34]的范围内,这是正确的。但是,当我用cv2阅读时:
import cv2
label = cv2.imread('example.png')
print(np.unique(label))
该数字带有[0,255],这在我的应用程序中不正确。请问如何调整cv2和pil的行为?
另外,当我检查解析该图像的matlab示例代码时,它的编写方式如下:
[labels, color_mappings] = imread('example.png')
png
文件似乎有两个数据字段,一个是值范围介于0到34之间的字段,另一个是彩色像素,我该如何使用cv2进行解析?
答案 0 :(得分:1)
我认为Dan的答案是正确的,但是如果您想进行“快速而肮脏的”测试,则可以使用以下代码进行操作:
将您的调色板图像转换为OpenCV无需任何额外库即可读取的调色板索引的单通道灰度PGM图像,以及一个可以在以后应用的单独的调色板文件
重新加载OpenCV可能已更改的索引的PGM文件,然后重新应用保存的调色板
capturedImageButton.setOnClickListener( new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent photoCaptureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(photoCaptureIntent, 100);
}
});
capturedImageButton1.setOnClickListener( new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent photoCaptureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(photoCaptureIntent, 101);
}
});
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(resultCode == RESULT_OK){
switch (this.resultCode){
case 100:
Bitmap bitmap = (Bitmap)data.getExtras().get("data");
capturedImageButton.setImageBitmap(bitmap);
break;
case 101:
Bitmap bitmap = (Bitmap)data.getExtras().get("data");
capturedImageButton1.setImageBitmap(bitmap);
break;
default:
break;
}
}
}
因此,将#!/usr/bin/env python3
import numpy as np
from PIL import Image
# Open palette image and remove pointless alpha channel
im = Image.open('image.png').convert('P')
# Extract palette and save as CSV
np.array(im.getpalette()).tofile('palette.csv',sep=',')
# Save palette indices as single channel PGM image that OpenCV can read
na = np.array(im)
im = Image.fromarray(na).save('indices.pgm')
分成image.png
,OpenCV可以将其读取为单个通道图像,而indices.pgm
则可以稍后再加载。
这是第二部分,我们从palette.csv
和indices.pgm
重建图像
palette.csv
请记住,不要在OpenCV中使用NEAREST_NEIGHBOUR以外的任何插值,否则您将引入原始图像中不存在的新颜色。
关键字:Python,PNG,图像处理,调色板,调色板索引,调色板索引