찾다
웹 프론트엔드PS 튜토리얼OpenCV의 성장으로 가는 길(3): PhotoShop의 마술봉 도구 흉내내기

이 기사의 주제는 실제로 이미지의 색 공간 변환입니다. 색상 선택 프로그램을 사용하여 OpenCV의 색상 변환 기능 사용법과 몇 가지 주의 사항을 설명합니다.

1. 몇 가지 일반적인 색상 공간:

RGB 색상 공간: RGB는 색상을 생성하는 다양한 "빛"의 비율을 설명하기 때문에 추가 색상 혼합 방법을 사용합니다. 어둠에서 시작하여 빛은 계속해서 겹쳐지며 색을 만들어낸다. RGB는 빨간색, 녹색, 파란색 빛의 값을 나타냅니다. 디지털 이미지 저장은 일반적으로 RGB 모드를 사용합니다. OpenCV에서 세 채널의 저장 순서는 BGR입니다.

HSV, HSI: 이 두 가지 색상 형식은 인간의 눈으로 보는 색상 구분을 기반으로 정의됩니다. 여기서 H(색조)는 색조, S(채도)는 채도, V(값)은 밝기, I( 강도)는 밝기를 나타냅니다.

Lab 공간: 모델의 균일한 변화는 인지된 색상의 균일한 변화에 해당하므로 Lab을 색상 공간의 한 점으로 상상할 수 있습니다. 가까울수록 실험실 공간은 두 색상의 유사성을 측정하는 데 자주 사용됩니다.

색공간에 대한 자세한 내용은 http://en.wikipedia.org/wiki/Color_space를 참조하세요.

2. OpenCV에서 색공간 변환

에서 OpenCV 이미지의 색상 변환은 cvtColor 함수를 통해 완료됩니다. opencv2/imgproc/imgproc.hpp 헤더 파일에 정의되어 있습니다.

void cvtColor ( InputArray src, OutputArray dst, int code, int dstCn=0 )

src: 이미지를 입력합니다.

dst: 출력 이미지.

코드: CV_BGR2Lab, CV_BGR2HSV, CV_HSV2BGR, CV_BGR2RGB와 같은 색상 변환 유형.

dstCn: 출력 이미지의 채널 번호. 기본값이 0인 경우 입력 이미지의 채널 수를 의미합니다.

이미지를 BGR에서 Lab으로 변환: cvtColor(image,image,CV_BGR2Lab)

3. 간단한 마술 지팡이 프로그램

먼저 colorDetect 클래스를 정의합니다.

class colorDetect{private:    int minDist; //minium acceptable distance    Vec3b target;//target color;    
    Mat result; //the resultpublic:
    colorDetect();    void SetMinDistance(int dist);    void SetTargetColor(uchar red,uchar green,uchar blue);    void SetTargetColor(Vec3b color); //set the target color    Mat process(const Mat& image); //main process};

minDist는 두 색상 사이의 거리를 제한하기 위해 정의한 임계값으로, PhotoShop의 마술 지팡이 도구의 임계값과 동일합니다.

target은 시드 색상과 동일한 대상 색상입니다. 결과는 저장 처리를 통해 얻은 결과입니다.

process가 주요 처리 프로그램입니다. process의 내용을 살펴보겠습니다.

Mat colorDetect::process(const Mat& image)
{    Mat ImageLab=image.clone();
    result.create(image.rows,image.cols,CV_8U);    
    //将image转换为Lab格式存储在ImageLab中    
    cvtColor(image,ImageLab,CV_BGR2Lab);    
    //将目标颜色由BGR转换为Lab    
    Mat temp(1,1,CV_8UC3);
    temp.at<Vec3b>(0,0)=target;//创建了一张1*1的临时图像并用目标颜色填充    
    cvtColor(temp,temp,CV_BGR2Lab);
    target=temp.at<Vec3b>(0,0);//再从临时图像的Lab格式中取出目标颜色

    // 创建处理用的迭代器    
    Mat_<Vec3b>::iterator it=ImageLab.begin<Vec3b>();    
    Mat_<Vec3b>::iterator itend=ImageLab.end<Vec3b>();    
    Mat_<uchar>::iterator itout=result.begin<uchar>();    
    while(it!=itend)
    {        
    //两个颜色值之间距离的计算        
    int dist=static_cast<int>(norm<int,3>(Vec3i((*it)[0]-target[0],
            (*it)[1]-target[1],(*it)[2]-target[2])));        
            if(dist<minDist)
            (*itout)=255;        
            else            
            (*itout)=0;
        it++;
        itout++;
    }    return result;
}


프로그램에서 특별히 주의해야 할 점이 두 가지 있습니다.

1. 이미지를 Lab 공간으로 변환한 후 대상 색상도 필요합니다. 변환 방법 임시 이미지가 생성됩니다.

2. Norm 함수는 두 색상 사이의 거리를 결정하는 데 사용됩니다. 해당 연산은 nor(v)입니다. 여기서 v는 희미한 차원의 벡터입니다. 프로그램에서는 두 가지 색상값을 뺀 결과로 3차원적 적정량이 됩니다.

생각해볼 가치가 있는 것은 Vec3i((*it)[0]-target[0],(*it)[1]-target[1],(*it)[2]- What인지 여부입니다. target[2])를 Vec3i((*it)-target)으로 바꾸는 방법은 무엇입니까? 대답은 '아니요'입니다. 왜냐하면 (*it)-target은 실제 작업 중에 빼기 결과 유형을 자동으로 제한하기 때문입니다.

더 많은 OpenCV 성장 경로(3): PhotoShop의 마술 지팡이 도구 모방, 관련 기사는 PHP 중국어 웹사이트에 주목하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
디자이너를위한 Photoshop : 시각적 개념 만들기디자이너를위한 Photoshop : 시각적 개념 만들기Apr 13, 2025 am 12:09 AM

다음 단계를 통해 Photoshop에서 시각적 개념을 만들 수 있습니다. 1. 새 문서 만들기, 2. 배경 레이어 추가, 2. 브러시 도구를 사용하여 기본 모양을 그리기 위해, 4. 색상과 밝기 조정, 5. 텍스트 및 그래픽 추가, 6. 로컬 편집에 마스크 사용, 필터 효과를 적용하는 데 도움이됩니다.이 단계는 스크래치에서 완전히 시각적 인 작업을 구축 할 수 있도록 도와줍니다.

Photoshop은 무료입니까? 구독 계획 이해Photoshop은 무료입니까? 구독 계획 이해Apr 12, 2025 am 12:11 AM

Photoshop은 무료가 아니지만 저렴한 비용 또는 무료로 사용하는 몇 가지 방법이 있습니다. 1. 무료 시험 기간은 7 일 이며이 기간 동안 모든 기능을 경험할 수 있습니다. 2. 학생 및 교사 할인은 비용을 절반으로 줄일 수 있으며 학교 증거가 필요합니다. 3. CreativeCloud 패키지는 전문 사용자에게 적합하며 다양한 Adobe 도구가 포함되어 있습니다. 4. Photoshopelements와 Lightroom은 기능이 적지 만 가격이 낮은 저렴한 대안입니다.

Photoshop의 가치 : 기능에 대한 비용의 무게를 측정합니다Photoshop의 가치 : 기능에 대한 비용의 무게를 측정합니다Apr 11, 2025 am 12:02 AM

Photoshop은 강력한 기능과 광범위한 애플리케이션 시나리오를 제공하기 때문에 투자 가치가 있습니다. 1) 핵심 기능에는 이미지 편집, 레이어 관리, 특수 효과 생산 및 색상 조정이 포함됩니다. 2) 전문 디자이너 및 사진 작가에게 적합하지만 아마추어는 김프와 같은 대안을 고려할 수 있습니다. 3) 높은 일회성 지출을 피하기 위해 필요에 따라 AdobecreativeCloud를 구독 할 수 있습니다.

Photoshop의 핵심 목적 : 창의적인 이미지 디자인Photoshop의 핵심 목적 : 창의적인 이미지 디자인Apr 10, 2025 am 09:29 AM

창의적인 이미지 디자인에서 Photoshop의 핵심 사용은 강력한 기능과 유연성입니다. 1) 디자이너는 레이어, 마스크 및 필터를 통해 창의성을 시각적 현실로 변환 할 수 있습니다. 2) 기본 사용에는 자르기, 크기 조정 및 색 보정이 포함됩니다. 3) 레이어 스타일, 블렌드 모드 및 스마트 객체와 같은 고급 사용법은 복잡한 효과를 만들 수 있습니다. 4) 일반적인 실수에는 부적절한 계층 관리 및 필터 사용 과도한 사용이 포함되며, 레이어를 구성하고 필터를 합리적으로 사용하여 해결할 수 있습니다. 5) 성능 최적화 및 모범 사례에는 계층의 합리적 사용, 파일의 정기 저축 및 바로 가기 키 사용이 포함됩니다.

웹 디자인을위한 Photoshop : UI/UX 용 고급 기술웹 디자인을위한 Photoshop : UI/UX 용 고급 기술Apr 08, 2025 am 12:19 AM

Photoshop은 웹 디자인에 사용하여 고 충실도 프로토 타입을 만들고 UI 요소를 설계하며 사용자 상호 작용을 시뮬레이션 할 수 있습니다. 1. 기본 디자인을 위해 레이어, 마스크 및 스마트 객체를 사용하십시오. 2. 애니메이션 및 타임 라인 기능을 통해 사용자 상호 작용을 시뮬레이션합니다. 3. 스크립트를 사용하여 설계 프로세스를 자동화하고 효율성을 향상시킵니다.

초보자 기사 : PS 브러시를 사용하여 글꼴에 크랙 효과를 추가하십시오 (공유)초보자 기사 : PS 브러시를 사용하여 글꼴에 크랙 효과를 추가하십시오 (공유)Apr 07, 2025 am 06:21 AM

이전 기사 "PS (즐겨 찾기)를 사용하여 플레이트 이미지에 인쇄 효과를 추가하기 위해 단계별로 가르치십시오. 다음 기사는 PS 브러시를 사용하여 글꼴에 균열 효과를 추가하는 방법을 소개합니다. 어떻게하는지 살펴 보겠습니다.

Photoshop Advanced Typography : 멋진 텍스트 효과 생성Photoshop Advanced Typography : 멋진 텍스트 효과 생성Apr 07, 2025 am 12:15 AM

Photoshop에서 레이어 스타일과 필터를 통해 텍스트 효과를 만들 수 있습니다. 1. 새 문서를 만들고 텍스트를 추가하십시오. 2. 그림자 및 외부 글로우와 같은 레이어 스타일을 적용하십시오. 3. 파도 효과와 같은 필터를 사용하고 경사 및 구호 효과를 추가하십시오. 4. 마스크를 사용하여 효과 범위와 강도를 조정하여 텍스트 효과의 시각적 영향을 최적화합니다.

사진을 자르는 방법사진을 자르는 방법Apr 06, 2025 pm 10:27 PM

절단은 이미지의 배경 부분을 제거하고 피사체를 남겨 두는 과정입니다. 일반적인 컷 아웃 방법에는 다음이 포함됩니다. 수동 컷 아웃 : 이미지 편집 소프트웨어를 사용하여 피사체의 가장자리를 수동으로 설명합니다. 자동 컷 아웃 : 소프트웨어를 사용하여 주제를 자동으로 식별하고 배경에서 분리하십시오. 타사 컷 아웃 도구 사용 : 특수 도구를 사용하여 이미지를 잘라냅니다. 채널 컷 아웃 : 이미지의 채널을 사용하여 작업을 위해 피사체 색상과 명백한 차이가있는 채널을 세그먼트하고 선택하십시오.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

맨티스BT

맨티스BT

Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.

메모장++7.3.1

메모장++7.3.1

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

MinGW - Windows용 미니멀리스트 GNU

MinGW - Windows용 미니멀리스트 GNU

이 프로젝트는 osdn.net/projects/mingw로 마이그레이션되는 중입니다. 계속해서 그곳에서 우리를 팔로우할 수 있습니다. MinGW: GCC(GNU Compiler Collection)의 기본 Windows 포트로, 기본 Windows 애플리케이션을 구축하기 위한 무료 배포 가능 가져오기 라이브러리 및 헤더 파일로 C99 기능을 지원하는 MSVC 런타임에 대한 확장이 포함되어 있습니다. 모든 MinGW 소프트웨어는 64비트 Windows 플랫폼에서 실행될 수 있습니다.

PhpStorm 맥 버전

PhpStorm 맥 버전

최신(2018.2.1) 전문 PHP 통합 개발 도구

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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