如何通过arcengine接口获取pixel depth

如何通过arcengine接口获取pixel depth,第1张

如何通过arcengine接口获取pixel depth

class Base<T> {

public Class getGenericType(int index) {

Type genType = getClass()getGenericSuperclass();

if (!(genType instanceof ParameterizedType)) {

return Objectclass;

}

Type[] params = ((ParameterizedType) genType)getActualTypeArguments();

if (index >= paramslength || index < 0) {

throw new RuntimeException("Index outof bounds");

}

if (!(params[index] instanceof Class)) {

return Objectclass;

}

return (Class) params[index];

}

}

其中Base<T>是泛型类,在父类中声明getGenericType,子类继承具体的Base<String>,那么在子类中就可以通过getGenericType(0)获取到String的class

 Arnold 渲染Z通道AOV,可以自动计算出场景的距离信息并保存到图像的alpha信息中。

Shuffle节点提取图像的alpha通道转换成RGB信息(如果Z通道和color在一个exr里,提取depth通道)

Grade 降低gain的值,这时候图像的深度信息已经出来了,为了便于使用,再给连一个Invert反转节点

这样就可以按照传统Z通道的用法对图像进行修改了

如果只想用这个Z通道制作景深模糊这些,还有下边这种用法。

ShuffleCopy节点拷贝Z通道图像的alpha通道给color的depth通道(如如果Z通道和color在一个exr里,这一步可省略)

ZBlur节点调节focus plane焦点平面,depth of field景深以及模糊程度

上边的方法都是用arnold自带的AOV预设渲染Z通道,下边这个方法是传统的Z通道,也就是一张rgb数据类型的黑白图

下边是材质球的连接方法

新建层赋给物体,或者建一个AOV连上去,通过设定old mix 场景离摄像机最近距离,old max场景离摄像机最远距离,便可以渲出一张黑白信息的深度通道。

Arnold 默认AOV _Z

优点:自动测算场景距离,如果场景物体带有透明贴图,无需多设置自会计算透明

Z通道(有时候计算的不是很理想)

缺点:在nuke里使用方式多数人觉得不习惯,如转成传统使用方法,需要连接几个节点,还有就是无法在maya里预览,只能使用exr格式

材质球连接的Z通道

优点:和传统使用方法一样,无需熟悉,上手即用

缺点:需要根据场景大小自己去给数值,如果遇到场景中有带有透明贴图的物体,还需要再修改材质球的连接。

bit depth准确的说是位深。像微积分一样,在模拟转到数字的过程里,把声音纵向无限切割,达到极限。(16 bit的音频信号大概有65, 536切面,位数每提升一级,切面的数量将正加一倍24 bit的信号将去到16,777,216个电平值切面),数学解释比较复杂,大概就是这个意思了。

OpenCV中获取图像某一像素值

This is a basic example for the OpenCV

First we must know the structure of IplImage:

IPL image:

IplImage

|-- int nChannels; // Number of color channels (1,2,3,4)

|-- int depth; // Pixel depth in bits:

| // IPL_DEPTH_8U, IPL_DEPTH_8S,

| // IPL_DEPTH_16U,IPL_DEPTH_16S,

| // IPL_DEPTH_32S,IPL_DEPTH_32F,

| // IPL_DEPTH_64F

|-- int width; // image width in pixels

|-- int height; // image height in pixels

|-- char imageData; // pointer to aligned image data

| // Note that color images are stored in BGR order

|-- int dataOrder; // 0 - interleaved color channels,

| // 1 - separate color channels

| // cvCreateImage can only create interleaved images

|-- int origin; // 0 - top-left origin,

| // 1 - bottom-left origin (Windows bitmaps style)

|-- int widthStep; // size of aligned image row in bytes

|-- int imageSize; // image data size in bytes = heightwidthStep

|-- struct _IplROI roi;// image ROI when not NULL specifies image

| // region to be processed

|-- char imageDataOrigin; // pointer to the unaligned origin of image data

| // (needed for correct image deallocation)

|

|-- int align; // Alignment of image rows: 4 or 8 byte alignment

| // OpenCV ignores this and uses widthStep instead

|-- char colorModel[4]; // Color model - ignored by OpenCV

//------------------------------------------------------------------------------int main(int argc, char argv[])

{

IplImage img=cvLoadImage("c://fruitfsbmp",1);

CvScalar s;

for(int i=0;i<img->height;i++){

for(int j=0;j<img->width;j++){

s=cvGet2D(img,i,j); // get the (i,j) pixel value

printf("B=%f, G=%f, R=%f ",sval[0],sval[1],sval[2]);

sval[0]=111;

sval[1]=111;

sval[2]=111;

cvSet2D(img,i,j,s);//set the (i,j) pixel value

}

}

cvNamedWindow("Image",1);

cvShowImage("Image",img);

cvWaitKey(0); //等待按键

cvDestroyWindow( "Image" );//销毁窗口

cvReleaseImage( &img ); //释放图像

return 0;

}

其实还有更好的方法,例如将其封装成类,调用起来更加方便,效率也很高。

以上就是关于如何通过arcengine接口获取pixel depth全部的内容,包括:如何通过arcengine接口获取pixel depth、如何从rgb32的图像中快速提取alpha通道、matlab 中图像的bitdepth是什么意思,求详解等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

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

原文地址: http://outofmemory.cn/web/9315659.html

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

发表评论

登录后才能评论

评论列表(0条)

保存