OpenCV 는 그림 에 테두리 기능 을 추가 합 니 다.
OpenCV 기반 함수 cv::copy MakeBorder 그림 에 테두리 추가
함수 프로필:
copyMakeBorder ( src, dst, top, bottom, left, right, borderType, value );
인자:
src:원본 이미지
dst:대상 그림
top,bottom,left,right:모든 경계 방향 에서 픽 셀 의 너비 입 니 다.그림 의 원본 크기 의 5%를 사용 합 니 다.
borderType:테두리 의 종류 입 니 다.현재 예 에서 순수 색 이나 경계 복사.
value:borderType 설정 위치 BORDERCONSTANT,이것 은 테두리 의 색 으로 사 용 됩 니 다.
테두리 의 종류
1)단색 테두리
BORDER_CONSTANT,테두리 설정 위치 단일 색상,예 를 들 어 검은색
2)그림 경계 확장
BORDER_REPLICATE,원본 그림 의 경 계 를 복사 하여 확장
코드
/**
* @file copyMakeBorder_demo.cpp
* @brief Sample code that shows the functionality of copyMakeBorder
* @author OpenCV team
*/
#include "opencv2/imgproc.hpp"
#include "opencv2/imgcodecs.hpp"
#include "opencv2/highgui.hpp"
using namespace cv;
//![variables]
Mat src, dst;
int top, bottom, left, right;
int borderType;
const char* window_name = "copyMakeBorder Demo";
RNG rng(12345);
//![variables]
/**
* @function main
*/
int main( int, char** argv )
{
int c;
//![load]
src = imread( argv[1], IMREAD_COLOR ); // Load an image
if( src.empty() )
{
printf(" No data entered, please enter the path to an image file
");
return -1;
}
//![load]
/// Brief how-to for this program
printf( "
\t copyMakeBorder Demo:
" );
printf( "\t --------------------
" );
printf( " ** Press 'c' to set the border to a random constant value
");
printf( " ** Press 'r' to set the border to be replicated
");
printf( " ** Press 'ESC' to exit the program
");
//![create_window]
namedWindow( window_name, WINDOW_AUTOSIZE );
//![create_window]
//![init_arguments]
/// Initialize arguments for the filter
top = (int) (0.05*src.rows); bottom = (int) (0.05*src.rows);
left = (int) (0.05*src.cols); right = (int) (0.05*src.cols);
//![init_arguments]
dst = src;
imshow( window_name, dst );
for(;;)
{
//![check_keypress]
c = waitKey(500);
if( (char)c == 27 )
{ break; }
else if( (char)c == 'c' )
{ borderType = BORDER_CONSTANT; }
else if( (char)c == 'r' )
{ borderType = BORDER_REPLICATE; }
//![check_keypress]
//![update_value]
Scalar value( rng.uniform(0, 255), rng.uniform(0, 255), rng.uniform(0, 255) );
//![update_value]
//![copymakeborder]
copyMakeBorder( src, dst, top, bottom, left, right, borderType, value );
//![copymakeborder]
//![display]
imshow( window_name, dst );
//![display]
}
return 0;
}
효과.이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Visual Studio 2017에서 OpenCV 템플릿 프로젝트 만들기・Windows 7 Professional 64bit ・Visual Studio 2017 Version 15.9.14 · OpenCV 3.4.1 OpenCV의 도입 방법 등은 아래를 참조하십시오. Visual Stu...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.