목차
1. 몇 가지 일반적인 색상 공간:
2. OpenCV에서 색공간 변환
3. 간단한 마술 지팡이 프로그램
웹 프론트엔드 PS 튜토리얼 OpenCV의 성장으로 가는 길(3): PhotoShop의 마술봉 도구 흉내내기

OpenCV의 성장으로 가는 길(3): PhotoShop의 마술봉 도구 흉내내기

Feb 20, 2017 am 09:09 AM
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으로 문의하세요.

핫 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 尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

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

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

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

소셜 미디어 그래픽을 만들기 위해 Photoshop을 어떻게 사용합니까? 소셜 미디어 그래픽을 만들기 위해 Photoshop을 어떻게 사용합니까? Mar 18, 2025 pm 01:41 PM

이 기사는 소셜 미디어 그래픽을위한 Photoshop, 설정, 설계 도구 및 최적화 기술을 사용하는 세부 사항에 대해 자세히 설명합니다. 그래픽 생성의 효율성과 품질을 강조합니다.

Photoshop의 콘텐츠 인식 필 및 콘텐츠 인식 이동 도구를 효과적으로 사용하려면 어떻게해야합니까? Photoshop의 콘텐츠 인식 필 및 콘텐츠 인식 이동 도구를 효과적으로 사용하려면 어떻게해야합니까? Mar 13, 2025 pm 07:35 PM

기사는 Photoshop의 콘텐츠 인식 필 및 이동 도구를 효과적으로 사용하여 소스 영역 선택, 실수 방지 및 최적의 결과를위한 설정 조정에 대한 팁을 제공합니다.

Photoshop (파일 크기, 해상도, 색상 공간)에서 웹 사용을위한 이미지를 어떻게 준비합니까? Photoshop (파일 크기, 해상도, 색상 공간)에서 웹 사용을위한 이미지를 어떻게 준비합니까? Mar 13, 2025 pm 07:28 PM

기사는 Photoshop에서 웹 사용을위한 이미지 준비, 파일 크기, 해상도 및 색상 공간 최적화에 중점을 둔다. 주요 문제는 빠른로드 시간과 이미지 품질의 균형을 맞추는 것입니다.

Photoshop에서 정확한 색상을 위해 모니터를 어떻게 보정합니까? Photoshop에서 정확한 색상을 위해 모니터를 어떻게 보정합니까? Mar 13, 2025 pm 07:31 PM

기사는 Photoshop의 정확한 색상에 대한 교정 모니터, 교정 도구, 부적절한 교정 효과 및 재 보정 주파수에 대해 설명합니다. 주요 문제는 색상 정확도를 보장하는 것입니다.

PS가 계속 로딩을 보여주는 이유는 무엇입니까? PS가 계속 로딩을 보여주는 이유는 무엇입니까? Apr 06, 2025 pm 06:39 PM

PS "로드"문제는 자원 액세스 또는 처리 문제로 인한 것입니다. 하드 디스크 판독 속도는 느리거나 나쁘다 : CrystalDiskinfo를 사용하여 하드 디스크 건강을 확인하고 문제가있는 하드 디스크를 교체하십시오. 불충분 한 메모리 : 고해상도 이미지 및 복잡한 레이어 처리에 대한 PS의 요구를 충족시키기 위해 메모리 업그레이드 메모리. 그래픽 카드 드라이버는 구식 또는 손상됩니다. 운전자를 업데이트하여 PS와 그래픽 카드 간의 통신을 최적화하십시오. 파일 경로는 너무 길거나 파일 이름에는 특수 문자가 있습니다. 짧은 경로를 사용하고 특수 문자를 피하십시오. PS 자체 문제 : PS 설치 프로그램을 다시 설치하거나 수리하십시오.

Photoshop (해상도, 색상 프로파일)을 사용하여 인쇄 이미지를 준비하려면 어떻게해야합니까? Photoshop (해상도, 색상 프로파일)을 사용하여 인쇄 이미지를 준비하려면 어떻게해야합니까? Mar 18, 2025 pm 01:36 PM

이 기사는 Photoshop에서 인쇄 이미지를 준비하고 해상도, 색상 프로파일 및 선명도에 중점을 둡니다. 300 PPI 및 CMYK 프로파일은 품질 인쇄에 필수적이라고 주장합니다.

Photoshop (파일 크기, 해상도 최적화)을 사용하여 웹에 대한 이미지를 어떻게 준비합니까? Photoshop (파일 크기, 해상도 최적화)을 사용하여 웹에 대한 이미지를 어떻게 준비합니까? Mar 18, 2025 pm 01:35 PM

기사는 파일 크기 및 해상도에 중점을 둔 Photoshop을 사용하여 웹의 이미지 최적화에 대해 설명합니다. 주요 문제는 품질과로드 시간의 균형입니다.

Photoshop에서 애니메이션 GIF를 어떻게 만들려면? Photoshop에서 애니메이션 GIF를 어떻게 만들려면? Mar 18, 2025 pm 01:38 PM

기사는 기존 GIF에 프레임을 추가하는 것을 포함하여 Photoshop에서 애니메이션 GIF를 만들고 최적화하는 것을 논의합니다. 주요 초점은 품질 균형과 파일 크기에 있습니다.

See all articles