『OpenCVによる画像処理入門』練習問題7.1(一部)
『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に鮮鋭化オペレータを適用すると、どのような画像が得られるか。
鮮鋭化オペレータ:画像のエッジを強調するオペレータ。入力画像に対して、ある平滑化処理を施し、その結果を元の画像から引くことで適用される。
Author And Source
この問題について(『OpenCVによる画像処理入門』練習問題7.1(一部)), 我々は、より多くの情報をここで見つけました https://qiita.com/ikenohotori/items/47cad6ea5082a9287afe著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .