將pgm圖片使用Sequence file儲存到hdfs,並讀取為Mat陣列格式
<pre name="code" class="java">package opencvImageSeq; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.BufferedFSInputStream; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IOUtils; import org.apache.hadoop.io.IntWritable; import org.apache.hadoop.io.SequenceFile; import org.apache.hadoop.io.Text; import java.io.*; import java.net.URI; import java.util.ArrayList; import java.util.List; /** * Created by lwc on 5/23/16. */ public class ImageSeqWriter { public static void main(String[] args) throws Exception { File inputDir = new File("/home/test/att_faces/s1"); if(!inputDir.isDirectory()) { throw new Exception("input dir is wrong"); } File[] inputFiles = inputDir.listFiles(); List<String> imageNames = new ArrayList<>(); InputStream inputStream = null; String uri = "hdfs://localhost:9000/home/hdfs/pgm2.seq"; Configuration conf = new Configuration(); FileSystem fs = FileSystem.get(URI.create(uri), conf); Path path = new Path(uri); Text key = new Text(); Text value = new Text(); // SequenceFile.Writer writer; // writer = SequenceFile.createWriter(fs, conf, path,key.getClass(), value.getClass()); SequenceFile.Writer writer = SequenceFile.createWriter(conf, SequenceFile.Writer.file(path), SequenceFile.Writer.keyClass(Text.class), SequenceFile.Writer.valueClass(Text.class)); for (File file: inputFiles) { inputStream = new BufferedInputStream(new FileInputStream(file)); String imageName =file.toString().substring(file.toString().lastIndexOf('/') + 1); imageNames.add(imageName); key = new Text(imageName); value = new Text(); byte[] buffer = new byte[1024]; while ((inputStream.read(buffer))!= -1) { value.set(buffer); writer.append(key, value);//將每條記錄追加到SequenceFile.Writer例項的末尾 value.clear(); } } for (String name: imageNames ) { System.out.println(name); } IOUtils.closeStream(inputStream); IOUtils.closeStream(writer); } }
package opencvImageSeq; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IOUtils; import org.apache.hadoop.io.SequenceFile; import org.apache.hadoop.io.Text; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStream; import java.net.URI; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * Created by lwc on 5/23/16. */ public class ImageSeqReader { public static void main(String[] args) throws Exception { String uri = "hdfs://localhost:9000/home/hdfs/pgm2.seq"; String baseDir = "/home/test/result/"; Configuration conf = new Configuration(); FileSystem fs = FileSystem.get(URI.create(uri), conf); Path path = new Path(uri); // SequenceFile.Reader reader = new SequenceFile.Reader(fs, path, conf); SequenceFile.Reader reader = new SequenceFile.Reader(conf,SequenceFile.Reader.file(path)); Map<Text, OutputStream> keyStream = new HashMap<>(); Text key = new Text(); Text value = new Text(); while (reader.next(key,value)) { if(!keyStream.containsKey(key)) { keyStream.put(key, new FileOutputStream(baseDir + key)); } keyStream.get(key).write(value.getBytes()); value.clear(); } for (HashMap.Entry out : keyStream.entrySet()) { ((FileOutputStream)out.getValue()).flush(); IOUtils.closeStream((FileOutputStream)out.getValue()); } IOUtils.closeStream(reader); } }
package opencvImageSeq; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.hadoop.io.IOUtils; import org.apache.hadoop.io.SequenceFile; import org.apache.hadoop.io.Text; import org.opencv.core.Core; import org.opencv.core.Mat; import org.opencv.core.MatOfByte; import org.opencv.imgcodecs.Imgcodecs; import java.io.ByteArrayOutputStream; import java.io.OutputStream; import java.net.URI; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; /** * Created by lwc on 5/23/16. */ public class ImageSeqMatReader { public static void main(String[] args) throws Exception { System.loadLibrary(Core.NATIVE_LIBRARY_NAME); String uri = "hdfs://localhost:9000/home/hdfs/pgm2.seq"; List<Mat> mats = new ArrayList<>(); Configuration conf = new Configuration(); FileSystem fs = FileSystem.get(URI.create(uri), conf); Path path = new Path(uri); // SequenceFile.Reader reader = new SequenceFile.Reader(fs, path, conf); SequenceFile.Reader reader = new SequenceFile.Reader(conf,SequenceFile.Reader.file(path)); Map<Text, OutputStream> keyStream = new HashMap<>(); Text key = new Text(); Text value = new Text(); while (reader.next(key,value)) { if(!keyStream.containsKey(key)) { keyStream.put(key, new ByteArrayOutputStream(1024)); } System.out.println(key.toString() + " key"); keyStream.get(key).write(value.getBytes(), 0, value.getLength()); value.clear(); } Mat mat ; ByteArrayOutputStream bs = null; for (HashMap.Entry out : keyStream.entrySet()) { bs = ((ByteArrayOutputStream)out.getValue()); bs.flush(); mat = Imgcodecs.imdecode(new MatOfByte(bs.toByteArray()),Imgcodecs.CV_LOAD_IMAGE_UNCHANGED); mats.add(mat.clone()); } IOUtils.closeStream(bs); IOUtils.closeStream(reader); int i = 10; System.out.println(mats.size() + " size"); for (Mat mat1: mats) { Imgcodecs.imwrite("/home/test/" + i++ + ".pgm" ,mat1); } } }
相關推薦
將pgm圖片使用Sequence file儲存到hdfs,並讀取為Mat陣列格式
<pre name="code" class="java">package opencvImageSeq; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.Buf
基於Java的YUV圖片檔案提取Y分量,並構建為灰度圖
YUV檔案對影象的一種較為普遍的編碼方式,Y表示亮度(Luminance、Luma),U代表色度(Chrominance)、V代表飽和度(Chroma);YUV格式的編碼的誕生有效地相容了黑白電視和彩色電視。相對於較為平常的RGB三通道影象,YUV格式編碼的影象視訊檔案在傳輸中佔據較小的頻寬。
二進制數據將圖片保存到數據庫,並讀取數據庫二進制數據顯示圖片
returns tco 新建 讀取 指定路徑 stat 指定 字節數 圖片轉換 一. 瀏覽圖片 OpenFileDialog ofd = new OpenFileDialog(); ofd.InitialDirectory = @"E:\";
Flume1.4 相關引數設定,將收集的資料彙總到hdfs,解決許多小檔案問題
參照官方文件,將 flume client 收集的日誌檔案 彙總到 flume sink收集端,然後儲存到hdfs 中,預設會按生成許多小檔案,如圖所示 實際中可能只需要生成一個檔案即可,這就涉及到了幾個相關引數設定如下即可 需要修改的檔案位於 flume/con
Java實現base64圖片轉換為base64字串。base64字串轉換圖片 之間的互相轉換,並儲存在本地。
java實現Base64資料圖片和資料間的互相轉換 首先建立類。寫兩個方法: 圖片轉base64字串方法:GetImageStr(); 字串轉為圖片方法:GenerateImage(); pa
將本地圖片上傳儲存到資料庫(理論上支援各種檔案的上傳)
//取得檔案的具體大小 int doclen = this.File1.PostedFile.ContentLength; //設定快取的具體大小 byte[] docB
ASP.Net將圖片以二進位制方式存入資料庫,並讀取
今天研究了一下如何將圖片已二進位制形式存入資料庫,然後再從中讀取顯示在頁面上。下面我會貼出一些關鍵程式碼。 1.將圖片存入資料庫 前臺程式碼: <asp:FileUpload ID="FileUploadImage" runat="server" />後臺程式
python將圖片轉base64存入redis,再讀取出來!
import redis import base64 #圖片轉文字 with open("/home/jd/Pictures/0.jpeg","rb") as f: # 開啟01.png圖片 # b64encode是編碼,b64decode是解碼
搞清Image加載事件(onload)、加載狀態(complete)後,實現圖片的本地預覽,並自適應於父元素內
斷圖 idt ont election href this 出現 alpha ole onload與complete介紹 complete只是HTMLImageElement對象的一個屬性,可以判斷圖片加載完成,不管圖片是不是有緩存;而onload則是這個Image對象的
創建yum本地倉庫,將阿裏倉庫同步到本地,並定時更新
nal 成了 creat yum .com for 我們 extend sed 很多時候為了加速自己內部的rpm包安裝速度,都會搭建自己的yum源倉庫,而使用系統光盤自帶的源,由於軟件版本比較落後,所以不太適用,而大家都在用的阿裏倉庫比較好用,所以就想到了把阿裏倉庫的rpm
讀取圖片的最大值,並保存到txt文件
mes -m pil code path 文件類型 root nump 像素 功能介紹:從一個文件夾中讀取圖片,獲得圖片的像素最大值,並記錄在txt文件中保存,同時應保存對應的文件名。 特別說明:圖片文件為png格式,8bit的單層圖(即灰度圖),不確定此代碼是否適用於其他
將文件拖曳到窗體上, 並獲取其完整路徑 【C++ Builder下實現】轉
pat ext stc fff led CP tle 聲明 net 1. 在窗體的頭文件.h裏聲明處理函數和消息映射, 如: [cpp] view plain copy class TForm1 : public TForm {
蘋果IOS 12將使您的iPhone更安全,並有更強大的黑客保護
證明 正在 默認 的確 密鑰 充電狀態 軟件 one dea 一年一度的IOS刷新正在進行中,蘋果已經預覽了它,beta測試者已經安裝了它,當iPhone在9月份到貨時我們其他人應該獲得iOS12。雖然軟件3-D表情符號和屏幕時間限制等功能在軟件到貨時可能會受到很大關註
將資料生成帶圖表的pdf,並下載
1 需求 在web開發中經常遇到一些報表資料的線上預覽和下載,在我之前一篇文章中說過幾種實現的方式,可以根據自己的需求採用合適自己的方案。 2 基本實現流程 我線上預覽和下載都是採用的pdf格式,其實就是考慮生成pdf的模板,然後向其中新增資料。但是,操作pdf比較死板,不靈活。於是考慮
把kafka資料從hbase遷移到hdfs,並按天載入到hive表(hbase與hadoop為不同叢集)
需求:由於我們用的阿里雲Hbase,按儲存收費,現在需要把kafka的資料直接同步到自己搭建的hadoop叢集上,(kafka和hadoop叢集在同一個區域網),然後對接到hive表中去,表按每天做分割槽 一、首先檢視kafka最小偏移量(offset) /usr/local/kafka/bin/k
web 上讀取圖片,並轉化為指定格式
一、 轉換為 base64 public static string ObtainBase64FromWeb(string domain, string path) { string url = "https://" + domain + path; System.Net.WebReq
給定一個非負整數 num,反覆將各個位上的數字相加,直到結果為一位數
示例: 輸入: 38 輸出: 2 解釋: 各位相加的過程為:3 + 8 = 11, 1 + 1 = 2。 由於2是一位數,所以返回 2。 進階: 你可以不使用迴圈或者遞迴,且在 O(1) 時間複雜度內解決這個問題嗎? class Solution {
【我要程式設計】Java技術手冊之根據圖片連結把圖片轉化為io流,並輸出到頁面上的方法
適用場景:A程式只能內網訪問,B程式可以外網訪問,只有B程式可以訪問A程式,使用者需要通過B程式訪問A程式的圖片資源。這是可以使用該方法。 @RequestMapping("/getImageByPath") public void getImageByTomcat(St
彙編基礎練習題2:編寫輸出子程式,功能是將AX中的數顯示輸出,並在主程式中驗證。
彙編基礎練習題2: 編寫輸出子程式,功能是將AX中的數顯示輸出,並在主程式中驗證。 編譯工具:Masm for Windows 整合實驗環境2012.5 (附帶一個工具下載地址https://download.csdn.net/download/qq_36931762/1082577
MySQL資料庫,將一列資料組合成一行,並以逗號分割
MySQL的資料庫的GROUP_CONCAT函式 這一列的資料是這樣的: 執行這段SQL: SELECT GROUP_CONCAT(CONCAT('\'',keyword,'\'')) FROM sp_goodimgsinfo where goodid='7