목록전체 글 (24)
어제보다 나은 내가 되자
엠보싱 필터링 엠보싱이란 입체감을 주는, 올록볼록한 형태로 만든 객체의 윤곽을 뜻한다. #include using namespace std; using namespace cv; int main() { Mat src = imread("rose.bmp", IMREAD_GRAYSCALE); if (src.empty()) { cerr
#include using namespace std; using namespace cv; Mat calcGrayHist(const Mat& img); Mat getGrayHistImage(const Mat& hist); int main() { Mat src = imread("hawkes.bmp", IMREAD_GRAYSCALE); Mat dst; equalizeHist(src, dst); imshow("src", src); imshow("srcHist", getGrayHistImage(calcGrayHist(src))); imshow("dst", dst); imshow("dstHist", getGrayHistImage(calcGrayHist(dst))); waitKey(); return 0; } Mat ..
#include using namespace std; using namespace cv; Mat calcGrayHist(const Mat& img); Mat getGrayHistImage(const Mat& hist); int main() { Mat src = imread("hawkes.bmp", IMREAD_GRAYSCALE); double gmin, gmax; minMaxLoc(src, &gmin, &gmax); // 최소값은 gmin에 저장, 최대값은 gmax에 저장 Mat dst = (src - gmin) * 255 / (gmax - gmin); imshow("src", src); imshow("srcHist", getGrayHistImage(calcGrayHist(src))); imshow("d..
#include using namespace std; using namespace cv; Mat getGrayHistImage(const Mat& hist); int main() { Mat src = imread("hawkes.bmp", IMREAD_GRAYSCALE); /* calc histogram */ Mat hist; int channels[] = { 0 }; // grayscale int dims = 1; // 1차원 const int histSize[] = { 256 }; // 256개의 빈 float graylevel[] = { 0,256 }; // 0~255 const float* ranges[] = { graylevel }; calcHist(&src, 1, channels, noArray..
#include using namespace std; using namespace cv; int main() { Mat src = imread("lenna.bmp", IMREAD_GRAYSCALE); Mat dst(src.rows, src.cols, src.type()); for (int j = 0; j < src.rows; j++) { for (int i = 0; i < src.cols; i++) { // 255의 범위를 벗어나면 오버플로우가되어 0부터 다시 시작되는 코드 //dst.at(j, i) = src.at(j, i) + 100; //dst.at(j, i) = saturate_cast(src.at(j, i) + 100) int v = src.at(j, i) + 100; dst.at(j, i) =..
void func(Mat& img) { CV_Assert(img.type() == CV_8UC1; // CV_Assert가 참이면 해당 함수 실행 }
#include using namespace std; using namespace cv; int main() { Mat src = imread("keyboard.bmp", IMREAD_GRAYSCALE); Mat bin; threshold(src, bin, 0, 255, THRESH_BINARY | THRESH_OTSU); Mat labels, stats, centroids; int cnt = connectedComponentsWithStats(bin, labels, stats, centroids); Mat dst; cvtColor(src, dst, COLOR_GRAY2BGR); for (int i = 1; i < cnt; i++) { // object check // i = 0 is background..
#include using namespace std; using namespace cv; void on_trackbar(int pos, void* userdata) { Mat src = *(Mat*)userdata; int blocksize = pos; if (blocksize % 2 == 0) blocksize--; // blocksize is possible when odd if (blocksize < 3) blocksize = 3; // blocksize minimum size Mat dst; adaptiveThreshold(src, dst, 255, ADAPTIVE_THRESH_GAUSSIAN_C, THRESH_BINARY, blocksize, 5); // threshold = gaussian a..