在java中用iplimage要引入哪个头文件

在java中用iplimage要引入哪个头文件,第1张

代码简单,如下:

/**

* IplImage转化为Bitmap

* @param iplImage

* @return

*/改虚

public Bitmap IplImageToBitmap(IplImage iplImage) {

Bitmap bitmap = null

bitmap = Bitmap.createBitmap(iplImage.width(), iplImage.height(),

Bitmap.Config.ARGB_8888)

bitmap.copyPixelsFromBuffer(iplImage.getByteBuffer())

return bitmap

}

/**

* Bitmap转化为IplImage

* @param bitmap

* @return

*/

public IplImage bitmapToIplImage(Bitmap bitmap) {

IplImage iplImage

iplImage = IplImage.create(bitmap.getWidth(), bitmap.getHeight(),

IPL_DEPTH_8U, 4)

bitmap.copyPixelsToBuffer(iplImage.getByteBuffer())

return iplImage

}

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

里面主要是用到了Bitmap的两个函数:

public void copyPixelsFromBuffer (Buffer src)

从buffer中复制点到Bitmap中,并且从初始位置开始会覆盖掉Bitmap中原来的点,复制过程中buffer的点不会以任何方式改变,不管原bitmap格式如何最终都会以32位的方式写入

public void copyPixelsToBuffer (Buffer dst)

将Bitmap中的点复制到指定的buffer当中,如果dst的空间不够大不能容下唤歼差bitmap中和皮的所有点,或者dst不是ByteBuffer, ShortBuffer, IntBuffer这三种之一,函数则会抛出异常

”我的Image里面只有7张图片,所以我以为定义filename 的大小为7“

你可知,filename是啥?

"G:\\转码视频\\Image\\out.avi"这整个的是一个filename,你自己数数这一个图像你用了几个char来存储的?

你这个程序错到离谱了,这里是读取视频的程序

#include "stdafx.h"

#include "highgui.h"

int main( int argc ,char ** argv){

CvCapture * capture = cvCreateFileCapture ("tree.avi") //读取视氏枝灶频

if(capture==NULL) {

printf("NO capture") //读取不成功,则标识

return 1

}

double fps=cvGetCaptureProperty(capture, CV_CAP_PROP_FPS ) //读取视频的帧率

int vfps = 1000 / fps //计算每帧播放的时间

printf("%5.1f\t%5d\n",fps,vfps)

double frames=cvGetCaptureProperty(capture,CV_CAP_PROP_FRAME_COUNT)//读取视频中歼扮有多少帧

printf("frames is %f\n",frames)

cvNamedWindow("example",CV_WINDOW_AUTOSIZE) //定义窗口

IplImage * frame

while(1){

frame = cvQueryFrame( capture ) //抓取帧

float ratio = cvGetCaptureProperty(capture, CV_CAP_PROP_POS_AVI_RATIO)//读取该帧在视频中的相对位置

printf("%f\n",ratio)

if(!frame)break

cvShowImage("example",frame) //显示

char c = cvWaitKey(vfps)

if(c == 27 )break

}

cvReleaseCapture(&capture)

cvDestroyWindow("example")

}

写视频的第一步要先读图,然后写!

另外楼上的,\\搭圆和\是不一样的,望注意。

CvImage( IplImage* img )可以将IplImage转换昌判差为CvImage。

CvImage类中

protected:

IplImage* image// 实际影象

int* refcount // 引用计耐皮数

IplImage* image由于是protected.

可以在OpenCV\cxcore\src\cximage.cpp里添加一个方法

IplImage* getImage(){

returen image

}

重新冲岁编译可用,实现

CvImage转换IplImage


欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/tougao/12226333.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-22
下一篇2023-05-22

发表评论

登录后才能评论

评论列表(0条)

    保存