1. 程式人生 > >Java OpenCV剪裁圖片,等比例縮放圖片

Java OpenCV剪裁圖片,等比例縮放圖片

最近完成一個專案,需要用到opencv但是網上關於opencv的java文章特別的少。

一邊摸索一般實現一個個小的功能。

package cn.edu.xiyou.hikvision;

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.Rect;
import org.opencv.core.Size;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;

import java.util.ArrayList;
import 
java.util.List; public class OpenCVCutImg { public static void main(String[] args) { System.loadLibrary(Core.NATIVE_LIBRARY_NAME); String filename = "D:/test2.jpg"; Mat image = Imgcodecs.imread(filename); // 598.6869,165.47272,1054.9825,784.5689 // 1191.1521,306.32123,1306.551,458.31805
List<Float> zb = new ArrayList<>(); zb.add(new Float("1191.1521")); zb.add(new Float("306.32123")); zb.add(new Float("1306.551")); zb.add(new Float("458.31805")); opencvCutImg(zb,image,"d:/outfile.jpg",300); } /** * openCV方法進行圖片的剪裁 * *
@param zb 圖片的人臉區域座標,為起止兩個點 * @param image 原始圖片opencv物件 * @param outfileName 輸出的檔名 * @param width_out 輸出的圖片寬度(方式人臉過小時擷取的圖片大小不一,前臺展示時不統一) */ public static boolean opencvCutImg(List<Float> zb, Mat image, String outfileName, int width_out) { boolean flag = true; if (zb.size() < 4) { System.out.println("輸入的人臉座標有誤!"); return false; } if (image == null) { System.out.println("輸入的圖片物件為空!"); return false; } //取得座標並進行等比例放大剪裁區域 int x_start = Math.round(zb.get(0)); int y_start = Math.round(zb.get(1)); int x_end = Math.round(zb.get(2)); int y_end = Math.round(zb.get(3)); int width = (int) ((x_end - x_start) * 1.3); int heigth = (int) ((y_end - y_start) * 1.25); int detx = (int) (width * 0.2); int dety = (int) (width * 0.2); if ((x_start - detx / 2) < 0) { x_start = 0; } else { x_start = x_start - detx / 2; } if ((y_start - dety) < 0) { y_start = 0; } else { y_start = y_start - dety; } Rect rect = new Rect(x_start, y_start, width, heigth);//設定感興趣的區域 Mat roi_img = new Mat(image, rect); Mat tmp_img = new Mat(); roi_img.copyTo(tmp_img);//複製內容之新建的圖片物件 int new_width = 0; //如果使用者輸入的寬度為0,則不進行縮放操作;否則按照使用者提供的寬度進行等比例縮放 if (width_out > 0) { new_width = width_out; Size s = new Size(new_width, tmp_img.height() * new_width / tmp_img.width()); Imgproc.resize(roi_img, tmp_img, s); } Imgcodecs.imwrite(outfileName, tmp_img);//寫出圖片檔案 System.out.println("圖片剪裁成功,儲存路徑為:" + outfileName); return flag; } }
直接留程式碼做一個mark吧

相關推薦

Java OpenCV剪裁圖片比例圖片

最近完成一個專案,需要用到opencv但是網上關於opencv的java文章特別的少。一邊摸索一般實現一個個小的功能。package cn.edu.xiyou.hikvision; import org.opencv.core.Core; import org.opencv

【Thumbnailator】java 使用Thumbnailator實現比例圖片旋轉圖片【轉載】

strong class chm eight load angle true api ins Thumbnailator概述: Thumbnailator是與Java界面流暢的縮略圖生成庫。它簡化了通過提供一個API允許精細的縮略圖生成調整生產從現有的圖

java圖片處理裁剪合圖比例

現在 外面核心,圖片文章比較少,看了拷貝程式碼,而用不了,用相應jar包處理,很多等比例縮放, 達不到 想要的給予的期望:本工具類,是之前做微信印表機寫的 基於java自帶的類,基於rgb。 package com.zjpz.util; import java.awt

比例圖片(C#)

col ID try ima 畫布 drawing key sta ati private Bitmap ZoomImage(Bitmap bitmap, int destHeight, int destWidth) { try {

【移動端佈局】讓圖片保持比例 (實用)

原文出處:https://www.aliyun.com/jiaocheng/639739.html 摘要: 前端寫頁面佈局時,圖片變形是個很令人頭疼的問題,手機螢幕解析度不一樣,出來的效果就不一樣,下面的程式碼可以解決這些問題,保持圖片在不同解析度下面也可以讓圖片不變形 1、首先不

Android 根據手機的螢幕的大小設定圖片比例

最近用到把一個圖片繪製到畫布上,然後用畫筆做標記,但是獲取的是圖片的寬和高,這樣繪製出來的無法完全匹配成全屏,下面記錄一個方法等比例了縮放: /** * * @param bm 傳入的bitmap * @param newWidth 指定

PHP比例圖片大小壓縮圖片空間

/** * 等比例壓縮圖片,支援圖片格式jpg,jpeg,png * @param string $dst_dir 上傳的資料夾 * @param string $dst_name 上傳後的名稱,不包括副檔名 * @param int $maxWidth 如果需要等比

JS比例圖片,限定最大寬度和最大高度

JavaScript //圖片按比例縮放 var flag=false; function DrawImage(ImgD,iwidth,iheight){ //引數(圖片,允許的寬度,允許的高度) var image=new Image(); image.src=ImgD.src

android比例圖片

// 縮放圖片public static Bitmap zoomImg(String img, int newWidth ,int newHeight){// 圖片源   Bitmap bm = BitmapFactory.decodeFile(img);   if(nul

圖片無失真壓縮 圖片無損比例

突然接受到一個需求,要將客戶的一部分高質量圖壓縮並且等比例縮放到800px。 嘗試很多,遇到兩個問題: 1.圖片壓縮了,14MB大概還有50KB左右,質量差的很,和原圖很不一樣。 2.圖片等比例縮放了,但是14MB做下來還有1MB 於是就有了以下的方法(圖片無失真壓縮和

淺談Android根據螢幕寬度比例圖片

mageView有scaleType屬性可以縮放圖片,讓圖片鋪滿螢幕寬度,但是會出現壓縮或裁剪的情況。 ImageView的scaleType的屬性分別是matrix(預設)、center、centerCrop、centerInside、fitCenter、fitEnd、f

在一定範圍裡比例圖片優化展示效果

在listview中,每個條目有一張圖片,圖片的大小是隨機的,怎麼展示才能美觀。很多人用的方法是,在ImageView中,加屬性 android:adjustViewBounds="true" android:maxHeight="300d

圖片加載防止窗口抖動又可以比例

窗口 head width 方法 wid nbsp image ima add 由於html加載最後才會加載圖片,所以如果沒有提前設置高度的話,就會出現窗口抖動,用戶體驗很不好. 如果固定死高度的話,又不能於寬等比例縮放。 解決辦法: 已知原圖的寬高比例 例如:此圖寬5

UIWebView改變HTML中圖片的大小進行比例

http://www.lanou3g.com/bbs/forum.php?mod=viewthread&tid=5189 現在越來越多的應用採用了Hybrid App(混合模式移動應用)這種開發模式,所以我們以後可能會越來越多的和UIWebView打交道。今天分享

Js圖片比例

tail wid display 圖片等比例縮放 nbsp function document fun splay <img src="chargein_cashgift_detail.png" class="img" > function sh

UEditor 上傳圖片比例

修改ueditor.all.js 16995行 updateTargetElement: function(){}裡的內容為 updateTargetElement: function () { var me = this; var newWidt

6、js控制設定圖片跟隨視窗(主要是根據高度變化)大小變化比例

html: <div class="container"> <img src="https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1545633786675&a

PHP例項————圖片比例功能

在網站開發的過程中,經常要對一些圖片進行一些處理,比如說縮放,裁剪,加水印等等。當然這些功能不僅僅可以用在開發網站的過程中,平時需要對圖片做一些處理的時候,把這個功能封裝到函式中去,要處理圖片的時候,

JAVA實現圖片,圖片擷取功能--封裝類

import java.awt.Graphics2D; import java.awt.Rectangle; import java.awt.RenderingHints; import java.awt.geom.AffineTransform; import java.

JS控制圖片顯示的大小(圖片比例

在Web上顯示圖片,通常都會有圖片顯示比例問題,如果不給<img />限制width和height,那麼如果圖片大了就會將整個頁面擠亂,圖片小了又會使圖片失真。 我的需求如下: 預先定義好圖片顯示的標準寬度和高度。 如果圖片的大小超過了標準定義,那麼等比例壓縮圖片。 如果圖片的大小等於標準定義,