「OpenCV에 의한 화상 처리 입문」연습 문제 7.1(일부)
연습 문제 7.1
1
Q. 그림 7.7에 Sobel 연산자를 적용하면 어떤 이미지를 얻을 수 있습니까? 적용 결과를 그레이 스케일 화상으로서 표시하기 위해서 필요한 처리는 무엇인가.
그림 7.7
Sobel 연산자: 가장자리(윤곽) 감지에 사용되는 연산자.
그레이스케일 이미지: 색감이 없는 밝기 정도만으로 표현한 이미지
그림 7.7의 이미지를 표시하는 프로그램
sub15_1.cpp//画面表示
void display(cv::Mat image) {
std::string windowName = "windowName";
cv::namedWindow(windowName, CV_WINDOW_NORMAL/2);
cv::imshow(windowName, image);
cv::waitKey(0);
}
int sub15() {
// 7×7の画像、1ch
cv::Mat image = cv::Mat::zeros(8, 8, CV_8UC1);
int cols = image.cols;
int rows = image.rows;
for (int j = 0; j < rows; j++) {
for (int i = 0; i < cols; i++) {
if((2<=j && j<=5) && (2 <= i && i <= 5))
{
image.at<unsigned char>(j, i) = 255;
}
else
{
image.at<unsigned char>(j, i) = 0;
}
}
}
//画面に出力
display(image);
return 0;
}
출력 이미지
그림 7.7에 Sobel 오퍼레이터를 적용하는 프로그램
sub15_2.cpp//画面表示
void display(cv::Mat image) {
std::string windowName = "windowName";
cv::namedWindow(windowName, CV_WINDOW_NORMAL/2);
cv::imshow(windowName, image);
cv::waitKey(0);
}
int sub15() {
// 7×7の画像、1ch
Mat img_src = cv::Mat::zeros(8, 8, CV_8UC1);
Mat img_tmp;
Mat img_dst;
int cols = img_src.cols;
int rows = img_src.rows;
for (int j = 0; j < rows; j++) {
for (int i = 0; i < cols; i++) {
if((2<=j && j<=5) && (2 <= i && i <= 5))
{
img_src.at<unsigned char>(j, i) = 255;
}
else
{
img_src.at<unsigned char>(j, i) = 0;
}
}
}
// Sobelオペレータ
Sobel(img_src, img_tmp, CV_32F, 1, 0, 3);
convertScaleAbs(img_tmp, img_dst, 1, 0);
//画面に出力
display(img_dst);
return 0;
}
출력 이미지
분열해 버렸다. .
그레이 스케일 이미지의 변환은 패스.
2
Q. 그림 7.7에 선명한 오퍼레이터를 적용하면 어떤 이미지를 얻을 수 있는가?
선명한 연산자: 이미지의 가장자리를 강조하는 연산자. 입력 화상에 소정의 평활화 처리를 실시하고, 그 결과를 원래의 화상으로부터 당기는 것으로 적용된다.
출력 이미지
이번에는 부풀어 오른다.
Reference
이 문제에 관하여(「OpenCV에 의한 화상 처리 입문」연습 문제 7.1(일부)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/ikenohotori/items/47cad6ea5082a9287afe
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
//画面表示
void display(cv::Mat image) {
std::string windowName = "windowName";
cv::namedWindow(windowName, CV_WINDOW_NORMAL/2);
cv::imshow(windowName, image);
cv::waitKey(0);
}
int sub15() {
// 7×7の画像、1ch
cv::Mat image = cv::Mat::zeros(8, 8, CV_8UC1);
int cols = image.cols;
int rows = image.rows;
for (int j = 0; j < rows; j++) {
for (int i = 0; i < cols; i++) {
if((2<=j && j<=5) && (2 <= i && i <= 5))
{
image.at<unsigned char>(j, i) = 255;
}
else
{
image.at<unsigned char>(j, i) = 0;
}
}
}
//画面に出力
display(image);
return 0;
}
//画面表示
void display(cv::Mat image) {
std::string windowName = "windowName";
cv::namedWindow(windowName, CV_WINDOW_NORMAL/2);
cv::imshow(windowName, image);
cv::waitKey(0);
}
int sub15() {
// 7×7の画像、1ch
Mat img_src = cv::Mat::zeros(8, 8, CV_8UC1);
Mat img_tmp;
Mat img_dst;
int cols = img_src.cols;
int rows = img_src.rows;
for (int j = 0; j < rows; j++) {
for (int i = 0; i < cols; i++) {
if((2<=j && j<=5) && (2 <= i && i <= 5))
{
img_src.at<unsigned char>(j, i) = 255;
}
else
{
img_src.at<unsigned char>(j, i) = 0;
}
}
}
// Sobelオペレータ
Sobel(img_src, img_tmp, CV_32F, 1, 0, 3);
convertScaleAbs(img_tmp, img_dst, 1, 0);
//画面に出力
display(img_dst);
return 0;
}
Reference
이 문제에 관하여(「OpenCV에 의한 화상 처리 입문」연습 문제 7.1(일부)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/ikenohotori/items/47cad6ea5082a9287afe텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)