목차
Example
Enter 2
출력
Java java지도 시간 Java OpenCV 라이브러리를 사용하여 두 이미지를 비교하는 방법은 무엇입니까?

Java OpenCV 라이브러리를 사용하여 두 이미지를 비교하는 방법은 무엇입니까?

Aug 28, 2023 pm 04:25 PM

두 개의 이미지 비교 -

  • Image.IO.read() 메서드를 사용하여 읽습니다.

  • 둘의 높이와 너비를 구하고 동일한지 확인하세요.

  • 픽셀 값을 가져오고 두 이미지의 RGB 값을 가져옵니다.

  • 이 두 이미지의 RGB 값 차이의 합을 구하세요.

    li>
  • 다음 공식을 사용하여 차이의 백분율을 계산합니다. -

Average = difference/weight*height*3;
Percentage = (Average/255)*100;

Example

import java.awt.Color;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;
import java.io.File;
public class ComparingImages {
   public static void main(String[] args) throws Exception {
      BufferedImage img1 = ImageIO.read(new File("D:\Images\test1.jpg"));
      BufferedImage img2 = ImageIO.read(new File("D:\Images\test2.jpg"));
      int w1 = img1.getWidth();
      int w2 = img2.getWidth();
      int h1 = img1.getHeight();
      int h2 = img2.getHeight();
      if ((w1!=w2)||(h1!=h2)) {
         System.out.println("Both images should have same dimwnsions");
      } else {
         long diff = 0;
         for (int j = 0; j < h1; j++) {
            for (int i = 0; i < w1; i++) {
               //Getting the RGB values of a pixel
               int pixel1 = img1.getRGB(i, j);
               Color color1 = new Color(pixel1, true);
               int r1 = color1.getRed();
               int g1 = color1.getGreen();
               int b1 = color1.getBlue();
               int pixel2 = img2.getRGB(i, j);
               Color color2 = new Color(pixel2, true);
               int r2 = color2.getRed();
               int g2 = color2.getGreen();
               int b2= color2.getBlue();
               //sum of differences of RGB values of the two images
               long data = Math.abs(r1-r2)+Math.abs(g1-g2)+ Math.abs(b1-b2);
               diff = diff+data;
            }
         }
         double avg = diff/(w1*h1*3);
         double percentage = (avg/255)*100;
         System.out.println("Difference: "+percentage);
      }
   }
}

Enter 1

如何使用Java OpenCV库比较两个图像?

Enter 2

如何使用Java OpenCV库比较两个图像?

출력

Difference: 92.54901960784314

위 내용은 Java OpenCV 라이브러리를 사용하여 두 이미지를 비교하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

JDBC로 Java의 거래를 처리하는 방법은 무엇입니까? JDBC로 Java의 거래를 처리하는 방법은 무엇입니까? Aug 02, 2025 pm 12:29 PM

JDBC 트랜잭션을 올바르게 처리하려면 먼저 자동 커밋 모드를 끄고 여러 작업을 수행 한 다음 결과에 따라 커밋 또는 롤백을 수행해야합니다. 1. 트랜잭션을 시작하려면 Conn.SetAutoCommit (False)에게 전화하십시오. 2. 인서트 및 업데이트와 같은 여러 SQL 작업을 실행합니다. 3. 모든 작업이 성공한 경우 Conn.commit ()에게 전화하여 데이터 일관성을 보장하기 위해 예외가 발생하면 Conn.Rollback ()에게 전화하십시오. 동시에, 재 시도는 리소스를 관리하고, 예외를 올바르게 처리하고, 연결 유출을 피하기 위해 긴밀한 연결을 사용하는 데 사용해야합니다. 또한 연결 풀을 사용하고 부분적으로 롤백을 달성하기 위해 저장 포인트를 설정하고 성능을 향상시키기 위해 거래를 가능한 한 짧게 유지하는 것이 좋습니다.

Java의 캘린더 작업 방법은 무엇입니까? Java의 캘린더 작업 방법은 무엇입니까? Aug 02, 2025 am 02:38 AM

이전 날짜 및 달력 클래스를 대체하기 위해 Java.Time 패키지의 클래스를 사용하십시오. 2. LocalDate, LocalDateTime 및 LocalTime을 통해 현재 날짜와 시간을 얻으십시오. 3. () 메소드를 사용하여 특정 날짜와 시간을 만듭니다. 4. 플러스/마이너스 방법을 사용하여 시간을 불안정하게 늘리고 감소시킵니다. 5. ZonedDateTime 및 Zoneid를 사용하여 시간대를 처리하십시오. 6. DateTimeFormatter를 통해 형식 및 구문 분석 날짜 문자열; 7. 필요한 경우 이전 날짜 유형과 호환되도록 즉시 사용하십시오. 현대 Java의 날짜 처리는 명확하고 불변의 선형을 제공하는 Java.Timeapi 사용에 우선 순위를 부여해야합니다.

Java 프레임 워크 비교 : Spring Boot vs Quarkus vs Micronaut Java 프레임 워크 비교 : Spring Boot vs Quarkus vs Micronaut Aug 04, 2025 pm 12:48 PM

Pre-FormancetArtUptimeMoryUsage, Quarkusandmicronautleadduetocompile-timeprocessingandgraalvsupport, withquarkusoftenperforminglightbetterine serverless sinarios.2.thyvelopecosyste,

자바의 교착 상태는 무엇이며 어떻게 막을 수 있습니까? 자바의 교착 상태는 무엇이며 어떻게 막을 수 있습니까? Aug 23, 2025 pm 12:55 PM

Adeadlockinjavaoccurswhentwoormorethreadsareblockedsforever,, 일반적으로, 일반적으로 duetocircularwaitcausedbyinconsentlockordering; thiscanbeptrededbectedbectedbectedbectedbectedbectefeartefournecessaryconditions —MutualExclusion, holdandwait, nopualwait, nopualclusion, nopualclusion

자바에서 문자열 배열에 합류하는 방법은 무엇입니까? 자바에서 문자열 배열에 합류하는 방법은 무엇입니까? Aug 04, 2025 pm 12:55 PM

String.join () (Java8) 사용은 문자열 배열을 연결하는 가장 권장되는 방법입니다. 분리기를 직접 지정하십시오. 2. 이전 버전의 Java 또는 더 많은 제어가 필요한 경우 StringBuilder를 사용하여 수동으로 통과하고 스플 라이스를 사용할 수 있습니다. 3. StringJoiner는 접두사 및 접미사와 같은보다 유연한 형식이 필요한 시나리오에 적합합니다. 4. arrays.stream ()을 Collectors.joining ()과 결합하여 결합하기 전에 배열을 필터링하거나 변환하는 데 적합합니다. 요약하면, Java8 이상을 사용하는 경우, 대부분의 경우 String.join () 메소드를 선호해야하며 간결하고 읽기 쉽지만 복잡한 논리에는 권장됩니다.

Java에서 간단한 TCP 클라이언트를 구현하는 방법은 무엇입니까? Java에서 간단한 TCP 클라이언트를 구현하는 방법은 무엇입니까? Aug 08, 2025 pm 03:56 PM

importjava.ioandjava.net.socketfori/oandsocketcommunication.2.createOcketObjectToConnectToThEserUsingHostNameAndport.3.usepritWriterTerndAviaOutputStreamandBufferEdERDERDERDEREADSERVERRSPONSSFROMINPUTSTREAM.4.USTERTRETOR-resto-restocoUtomati

자바에서 두 줄을 비교하는 방법은 무엇입니까? 자바에서 두 줄을 비교하는 방법은 무엇입니까? Aug 04, 2025 am 11:03 AM

.quals () 메소드를 사용하여 문자열 내용을 비교하십시오. == 컨텐츠보다는 객체 참조 만 비교하므로; 1. .Equals ()를 사용하여 문자열 값을 동일하게 비교합니다. 2. .EqualSignoreCase ()를 사용하여 사례를 무시하는 것을 비교합니다. 3. .compareto ()를 사용하여 사전 순서로 문자열을 비교하고 0, 음수 또는 양수 숫자를 반환합니다. 4. .comparetoignorecase ()를 사용하여 사례 무시를 비교합니다. 5. Objects.equals () 또는 안전한 호출 방법을 사용하여 널 포인터 예외를 피하기 위해 널 문자열을 처리합니다. 요컨대, 문자열 내용 비교에는 ==를 사용하지 않아야합니다.

가비지 수집은 Java에서 어떻게 작동합니까? 가비지 수집은 Java에서 어떻게 작동합니까? Aug 02, 2025 pm 01:55 PM

Java 's Garbage Collection (GC)은 메모리를 자동으로 관리하는 메커니즘으로, 도달 할 수없는 물체를 되 찾아서 메모리 누출의 위험을 줄입니다. 1.GC는 루트 객체 (예 : 스택 변수, 활성 스레드, 정적 필드 등)에서 객체의 접근성을 판단하며, 도달 할 수없는 객체는 쓰레기로 표시됩니다. 2. 마크 클리어링 알고리즘을 기반으로, 모든 도달 가능한 객체와 표시되지 않은 개체를 표시하십시오. 3. 세대 수집 전략 채택 : 새로운 세대 (Eden, S0, S1)는 종종 미성년자를 실행합니다. 노인은 성능이 적지 만 MajorGC를 수행하는 데 시간이 더 걸립니다. Metaspace는 클래스 메타 데이터를 저장합니다. 4. JVM은 다양한 GC 장치를 제공합니다. SerialGC는 소규모 응용 프로그램에 적합합니다. ParallelGC는 처리량을 향상시킵니다. CMS가 줄어 듭니다

See all articles