激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - Java教程 - java中如何使用BufferedImage判斷圖像通道順序并轉RGB/BGR

java中如何使用BufferedImage判斷圖像通道順序并轉RGB/BGR

2020-09-01 09:4810km Java教程

這篇文章主要介紹了java中如何BufferedImage判斷圖像通道順序并轉RGB/BGR的相關資料,需要的朋友可以參考下

java中BufferedImage判斷圖像通道順序并轉RGB/BGR

一般來說Java ImageIO處理讀取圖像時,一般是RGB或ARGB格式,但是有的時候,我們需要圖像是BGR格式,

比如通過JNI將圖像矩陣傳遞給動態庫,動態庫里用OpenCV來處理矩陣,而用OpenCV處理圖像時默認通道順序是BGR,這時就需要一個到BGR轉換。

翻了好Java API好久,還真沒發現有直接將RGB轉BGR的方法,于是只好自己寫一個,以下是代碼片段,用于實現判斷BufferedImage圖像類型及通道順序,并將BufferedImage轉為RGB或BGR

  實例代碼:

?
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
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
/**
  * @param image
  * @param bandOffset 用于判斷通道順序
  * @return
  */
 private static boolean equalBandOffsetWith3Byte(BufferedImage image,int[] bandOffset){
   if(image.getType()==BufferedImage.TYPE_3BYTE_BGR){
     if(image.getData().getSampleModel() instanceof ComponentSampleModel){
       ComponentSampleModel sampleModel = (ComponentSampleModel)image.getData().getSampleModel();
       if(Arrays.equals(sampleModel.getBandOffsets(), bandOffset)){
         return true;
       }
     }
   }
   return false;   
 }
 /**
  * 判斷圖像是否為BGR格式
  * @return
  */
 public static boolean isBGR3Byte(BufferedImage image){
   return equalBandOffsetWith3Byte(image,new int[]{0, 1, 2});
 }
 /**
  * 判斷圖像是否為RGB格式
  * @return
  */
 public static boolean isRGB3Byte(BufferedImage image){
   return equalBandOffsetWith3Byte(image,new int[]{2, 1, 0});
 }
 /**
  * 對圖像解碼返回RGB格式矩陣數據
  * @param image
  * @return
  */
 public static byte[] getMatrixRGB(BufferedImage image) {
   if(null==image)
     throw new NullPointerException();
   byte[] matrixRGB;
   if(isRGB3Byte(image)){
     matrixRGB= (byte[]) image.getData().getDataElements(0, 0, image.getWidth(), image.getHeight(), null);
   }else{
     // 轉RGB格式
     BufferedImage rgbImage = new BufferedImage(image.getWidth(), image.getHeight(),
         BufferedImage.TYPE_3BYTE_BGR);
     new ColorConvertOp(ColorSpace.getInstance(ColorSpace.CS_sRGB), null).filter(image, rgbImage);
     matrixRGB= (byte[]) rgbImage.getData().getDataElements(0, 0, image.getWidth(), image.getHeight(), null);
   }
   return matrixRGB;
 }
 /**
  * 對圖像解碼返回BGR格式矩陣數據
  * @param image
  * @return
  */
 public static byte[] getMatrixBGR(BufferedImage image){
   if(null==image)
     throw new NullPointerException();
   byte[] matrixBGR;
   if(isBGR3Byte(image)){
     matrixBGR= (byte[]) image.getData().getDataElements(0, 0, image.getWidth(), image.getHeight(), null);
   }else{    
     // ARGB格式圖像數據
     int intrgb[]=image.getRGB(0, 0, image.getWidth(), image.getHeight(), null, 0, image.getWidth());
     matrixBGR=new byte[image.getWidth() * image.getHeight()*3];
     // ARGB轉BGR格式
     for(int i=0,j=0;i<intrgb.length;++i,j+=3){
       matrixBGR[j]=(byte) (intrgb[i]&0xff);
       matrixBGR[j+1]=(byte) ((intrgb[i]>>8)&0xff);
       matrixBGR[j+2]=(byte) ((intrgb[i]>>16)&0xff);
     }
   }
   return matrixBGR;
 }

感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!

原文鏈接:http://blog.csdn.net/10km/article/details/65444680

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25
主站蜘蛛池模板: 在线观看麻豆 | av成人在线电影 | 蜜桃视频在线免费播放 | 久久看免费视频 | 中文字幕线观看 | 亚洲va久久久噜噜噜久久男同 | 曰韩av在线 | xxxx18韩国护士hd老师 | xnxx 日本19 | 一区二区三区日韩在线 | a免费视频 | 成人精品久久久 | 久草在线观看福利 | 欧美一页 | 娇喘在线| 原来神马影院手机版免费 | 黄色网址免费入口 | 欧美日韩在线视频一区 | 羞羞的视频免费在线观看 | 国产超碰人人做人人爱 | 国产男女爽爽爽爽爽免费视频 | 国产大片在线观看 | 欧美视屏一区二区 | 久久国产精品久久久久久久久久 | 黄色片在线播放 | 久久免费视频3 | 亚洲福利在线视频 | 久久草在线看 | 九一传媒在线观看 | 337p日本欧洲亚洲大胆精蜜臀 | 欧美性色黄大片www 成人免费网站在线观看 | 一边吃奶一边摸下娇喘 | 中国性xxx | 美女羞羞视频网站 | 精品999久久久 | 成人免费毛片网站 | 日韩精品99久久久久久 | 成人久久免费 | 黄色a级片免费观看 | 九色中文字幕 | 久久男人天堂 |