问题
使用 openimaj 从摄像头视频中获取队员人脸 创建 image 的时候 设置了RGB格式 但是 运行结果显示还是灰度图像
问题相关代码
public void faceCapture() throws VideoCaptureException{
// 创建视频捕获对象
vc = new VideoCapture(320,240);
//创建 JFrame 窗口,用于显示视频
windows = DisplayUtilities.makeFrame("摄像头人脸检测中...");
windows.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
windows.setVisible(true);
//创建视频显示对象
vd = VideoDisplay.createVideoDisplay(vc,windows);
// 监听视频
vd.addVideoListener(
//视频显示的监听--针对每一帧的图片
new VideoDisplayListener<MBFImage>(){
public void beforeUpdate(MBFImage frame){
FaceDetector<DetectedFace,FImage> fd = new HaarCascadeDetector(40);
List<DetectedFace> faces = fd.detectFaces(Transforms.calculateIntensity(frame));
for(DetectedFace face : faces ) {
BufferedImage image = new BufferedImage (face.getFacePatch().getWidth(), face.getFacePatch().getHeight(), BufferedImage.TYPE_INT_RGB);
frame.drawShape(face.getBounds(), RGBColour.RED);
image =ImageUtilities.createBufferedImageForDisplay(face.getFacePatch());
DisplayUtilities.display(frame); //输出显示RGB图像
DisplayUtilities.display(face.getFacePatch());//输出显示灰度图像
DisplayUtilities.display(image);//输出显示灰度图像
faceImages.addLast(image);
}
}
public void afterUpdate(VideoDisplay<MBFImage> display){
}
});
}
运行结果
用了3个 DisplayUtilities.display(); 输出显示结果分别为:
DisplayUtilities.display(frame); //输出显示彩色图像
DisplayUtilities.display(face.getFacePatch());//输出显示灰度图像
DisplayUtilities.display(image);//输出显示灰度图像
我的解答思路
以上显示结果 可以看出 image为灰度图像的原因 应该是从图像集里获取的 face.getFacePatch() 也是 灰度图像 只要解决faces图像集里的图像为彩色图像应该就可以解决此问题
我想要达到的结果
需要怎么调整代码 可以使image图像显示为彩色图像??