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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
/*
* Author: Rajib Chandra Das
* Topic: YUV(NV12)-->CIImage--->UIImage Conversion
* Date: 21_July_2016
*/
NSDictionary
*
pixelAttributes
=
@
{
(
id
)
kCVPixelBufferIOSurfacePropertiesKey
:
@
{
}
}
;
CVPixelBufferRef
pixelBuffer
=
NULL
;
CVReturn
result
=
CVPixelBufferCreate
(
kCFAllocatorDefault
,
640
,
480
,
kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange
,
(
__bridge
CFDictionaryRef
)
(
pixelAttributes
)
,
&pixelBuffer
)
;
CVPixelBufferLockBaseAddress
(
pixelBuffer
,
0
)
;
unsigned
char
*
yDestPlane
=
CVPixelBufferGetBaseAddressOfPlane
(
pixelBuffer
,
0
)
;
memcpy
(
yDestPlane
,
y_ch0
,
640
*
480
)
;
//Here y_ch0 is Y-Plane of YUV(NV12) data.
unsigned
char
*
uvDestPlane
=
CVPixelBufferGetBaseAddressOfPlane
(
pixelBuffer
,
1
)
;
memcpy
(
uvDestPlane
,
y_ch1
,
640
*
480
/
2
)
;
//Here y_ch1 is UV-Plane of YUV(NV12) data.
CVPixelBufferUnlockBaseAddress
(
pixelBuffer
,
0
)
;
if
(
result
!=
kCVReturnSuccess
)
{
NSLog
(
@
"Unable to create cvpixelbuffer %d"
,
result
)
;
}
CIImage
*
coreImage
=
[
CIImage
imageWithCVPixelBuffer
:
pixelBuffer
]
;
//CIImage Conversion DONE!!!!
CIContext
*
MytemporaryContext
=
[
CIContext
contextWithOptions
:
nil
]
;
CGImageRef
MyvideoImage
=
[
MytemporaryContext
createCGImage
:
coreImage
fromRect
:
CGRectMake
(
0
,
0
,
640
,
480
)
]
;
UIImage
*
Mynnnimage
=
[
[
UIImage
alloc
]
initWithCGImage
:
MyvideoImage
scale
:
1.0
orientation
:
UIImageOrientationRight
]
;
//UIImage Conversion DONE!!!
CVPixelBufferRelease
(
pixelBuffer
)
;
CGImageRelease
(
MyvideoImage
)
;
|
nv12 to cimage to uimage 转化
最新推荐文章于 2024-09-11 08:59:04 发布