【图像处理】获取图片像素点
生活随笔
收集整理的這篇文章主要介紹了
【图像处理】获取图片像素点
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
獲取圖片像素點
本文通過兩種方法獲取圖片的像素點,方法1通過java自帶的API,方法2通過OpenCV的API。
1.Java自帶API獲取像素點
函數(shù)聲明:
//獲取當(dāng)前像素rgb,其中x代表橫坐標(biāo)(橫著的,對應(yīng)于width) public int getRGB(int x,int y)//r、g、b能從color中獲取 Color color = new Color(img.getRGB(j, i));當(dāng)進(jìn)行兩層循環(huán)時,getRGB的參數(shù)需要反著寫,具體看下面
使用:
BufferedImage img = ImageIO.read(new File("C:\\Users\\***.jpg"));for (int i = 0; i < height; i++) {//行for (int j = 0; j < width; j++) {//列Color color = new Color(img.getRGB(j, i)); //反著寫,列對應(yīng)值x軸int red = color.getRed();int green = color.getGreen();int blue = color.getBlue();System.out.println("["+i+","+j + "]:(" + red + "," + green + "," + blue + ")");} }2.opencv獲取像素點
函數(shù)聲明
public double[] get(int row,int col) //Mat中的方法,獲取該點的像素點, //返回值是一個數(shù)組,順序是B、G、R,是反著的 //ans[0]代表blue值,ans[1]代表green,ans[2]代表red使用:
Mat img = Imgcodecs.imread("C:\\***.jpg");for (int i = 0; i < size.height; i++) {for (int j = 0; j < size.width; j++) {double[] rgb = img.get(i, j);System.out.println("["+i+","+j + "]:(" + rgb[2] + "," + rgb[1] + "," + rgb[0] + ")");} }例子
- 使用OpenCV獲取所有像素點
- 使用ImageIO獲取所有像素點
風(fēng)格對比
-
參數(shù)風(fēng)格
他們的參數(shù)正好是反著的,行對應(yīng)的是y軸,列對應(yīng)的是x軸,所以在使用的時候要略微注意不同
-
opencv的參數(shù)風(fēng)格是:行,列。
-
而Java原生的參數(shù)風(fēng)格是:x軸,y軸。
-
-
opencv獲取RGB時的順序是B、G、R,是反著的
rgb[0]代表blue,rgb[2]代表red
未完待續(xù)
操作像素點,可以做有意思的功能,比如,一臺相機固定于一個地點,每天中午12:00拍攝一張照片,那么經(jīng)過一年的拍攝,共能拍攝365或者366張圖片,每張圖片取最中間的四列像素,這樣按照拍攝時間排序,就能夠組成一張年度照片,該年度照片記錄了這一個地點的中間位置一年的變化情況。
就像這樣
總結(jié)
以上是生活随笔為你收集整理的【图像处理】获取图片像素点的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: .Net Core跨平台 图片验证码
- 下一篇: 整数n分解成素数乘积c语言,用C语言和汇