Opencv for c++画像処理


画像を表示
#include 
#include 

using namespace cv;
int main(int argc, char** argv) {
    //std::cout << "Hello, World!" << std::endl;
    Mat img=imread("../test.jpg");
    imshow("123", img);
    waitKey(0);

    return 0;
}

MatクラスはOpenCV表現の2次元画像の基礎である.
イメージエッチング
腐食:画像の暗い色の部分で画像のハイライト部分を「腐食」します.
#include 
#include 

using namespace cv;
int main(int argc, char** argv) {
    //std::cout << "Hello, World!" << std::endl;
    Mat img=imread("../test.jpg");
    imshow("123", img);
    Mat element = getStructuringElement(MORPH_RECT, Size(15, 15));
    Mat dstImage;
    erode(img, dstImage, element);
    imshow("456", dstImage);
    waitKey(0);

    return 0;
}

getStructuringElement関数は、指定したサイズと形状の構造要素(カーネルマトリクス)の値を返します.Erode関数は画像腐食を行う.腐食は画像形態学における操作であり,リンクされたこのブログにはいくつかの関連紹介がある.
イメージブラー
#include 
#include 

using namespace cv;
int main(int argc, char** argv) {
    //std::cout << "Hello, World!" << std::endl;
    Mat img=imread("../test.jpg");
    imshow("123", img);

    Mat dstImage;
    blur(img, dstImage, Size(7, 7));
    imshow("456", dstImage);

    waitKey(0);

    return 0;
}

blur関数は画像を平均フィルタリングし,画像をぼかしてもよい.
cannyエッジ検出
画像を読み込み、階調マップに変換し、blur関数で画像ブラーを行いノイズを低減し、canny関数でエッジ検出を行います.
#include 
#include 

using namespace cv;
int main(int argc, char** argv) {
    //std::cout << "Hello, World!" << std::endl;
    Mat img=imread("../test.jpg");
    imshow("123", img);

    Mat edge, grayImage;
    cvtColor(img, grayImage, CV_BGR2GRAY);
    Mat dstImage;
    blur(grayImage, dstImage, Size(7, 7));
    Canny(dstImage, edge, 3, 9, 3);
    imshow("456", edge);

    waitKey(0);

    return 0;
}

画像をぼかし操作する主な役割はノイズを除去することである.ノイズも高周波信号に集中するため、擬似エッジとして容易に認識される.画像ブラーはノイズを除去し,擬似エッジの識別を低減する.しかし,画像エッジ情報も高周波信号であるため,ぼかしの半径選択が重要であり,過大な半径では弱いエッジが検出されにくい.
画像に透かしを付ける
実は画像ミックスです
#include 
#include 

using namespace cv;
int main(int argc, char** argv) {

    Mat image = imread("../test.jpg");
    imshow("source", image);
    Mat temp = imread("../shuiyin.jpg");
    Mat print;
    resize(temp, print, Size(50, 50));
    imshow("print", print);
    Mat ROI = image(cvRect(image.cols-print.cols, image.rows-print.rows, print.cols, print.rows));
    addWeighted(ROI, 1, print, 0.3, 2, ROI);
    imshow("sourceWithPrint", image);
    waitKey(0);

    return 0;
}