use of org.bytedeco.opencv.opencv_core.IplImage in project blog_demos by zq2599.
the class AbstractCameraApplication method grabAndOutput.
/**
* 预览和输出
* @param grabSeconds 持续时长
* @throws Exception
*/
private void grabAndOutput(int grabSeconds) throws Exception {
// 添加水印时用到的时间工具
SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
long endTime = System.currentTimeMillis() + 1000L * grabSeconds;
// 两帧输出之间的间隔时间,默认是1000除以帧率,子类可酌情修改
int interVal = getInterval();
// 水印在图片上的位置
org.bytedeco.opencv.opencv_core.Point point = new org.bytedeco.opencv.opencv_core.Point(15, 35);
Frame captureFrame;
IplImage img;
Mat mat;
// 超过指定时间就结束循环
while (System.currentTimeMillis() < endTime) {
// 取一帧
captureFrame = grabFrame();
if (null == captureFrame) {
log.error("帧对象为空");
break;
}
// 将帧对象转为IplImage对象
img = openCVConverter.convert(captureFrame);
// 镜像翻转
cvFlip(img, img, 1);
// IplImage转mat
mat = new Mat(img);
// 在图片上添加水印,水印内容是当前时间,位置是左上角
opencv_imgproc.putText(mat, simpleDateFormat.format(new Date()), point, opencv_imgproc.CV_FONT_VECTOR0, 0.8, new Scalar(0, 200, 255, 0), 1, 0, false);
// 子类输出
output(openCVConverter.convert(mat));
// 适当间隔,让肉感感受不到闪屏即可
if (interVal > 0) {
Thread.sleep(interVal);
}
}
log.info("输出结束");
}
use of org.bytedeco.opencv.opencv_core.IplImage in project blog_demos by zq2599.
the class Train2 method train.
private void train(String[][] sources, String outputPath) throws IOException {
int totalImageNums = 0;
for (String[] oneKindFaces : sources) {
totalImageNums += oneKindFaces.length;
}
MatVector imageIndexMatMap = new MatVector(totalImageNums);
// 这里面用来记录每一张照片的类型
Mat lables = new Mat(totalImageNums, 1, CV_32SC1);
IntBuffer lablesBuf = lables.createBuffer();
int kindIndex = 1;
int imageIndex = 0;
IplImage img;
IplImage grayImg;
for (String[] oneOfFaces : sources) {
for (String face : oneOfFaces) {
// imageIndex代表第几张,kindIndex代表第几类
// 将每一张的类型存储在lablesBuf中
lablesBuf.put(imageIndex, (byte) kindIndex);
img = cvLoadImage(face);
grayImg = IplImage.create(img.width(), img.height(), IPL_DEPTH_8U, 1);
Mat faceMat = matConv.convertToMat(iplConv.convert(grayImg));
resize(faceMat, faceMat, new Size(122, 122));
imageIndexMatMap.put(imageIndex, faceMat);
imageIndex++;
}
kindIndex++;
}
FaceRecognizer faceRecognizer = FisherFaceRecognizer.create();
faceRecognizer.train(imageIndexMatMap, lables);
faceRecognizer.save(outputPath);
faceRecognizer.close();
}
use of org.bytedeco.opencv.opencv_core.IplImage in project javacv by bytedeco.
the class RealSense2FrameGrabber method grabCVFrame.
private Frame grabCVFrame(int streamType, int streamIndex, int iplDepth, int iplChannels) throws Exception {
Frame outputFrame;
// get frame of type if available
rs2_frame frame = findFrameByStreamType(this.frameset, streamType, streamIndex);
if (frame == null)
return null;
// get frame data
Pointer frameData = getFrameData(frame);
Size size = getFrameSize(frame);
// create cv frame
IplImage image = IplImage.createHeader(size.width(), size.height(), iplDepth, iplChannels);
cvSetData(image, frameData, size.width() * iplChannels * iplDepth / 8);
outputFrame = converter.convert(image);
// add timestamp
double timestamp = getFrameTimeStamp(frame);
outputFrame.timestamp = Math.round(timestamp);
// cleanup
rs2_release_frame(frame);
return outputFrame;
}
Aggregations