0
点赞
收藏
分享

微信扫一扫

opencv1:带滚动条的图片二值化处理


首先用opencv 来显示一副图片。这很简单,代码如下:

opencv 显示一副图片

#include <opencv2/opencv.hpp>  

using namespace cv;

int main(int argc, char** argv){
IplImage* img = cvLoadImage("image2.jpg");
cvNamedWindow("Example1", CV_WINDOW_AUTOSIZE);
cvShowImage("Example1", img);
cvWaitKey(0);
cvReleaseImage(&img);
cvDestroyWindow("Example1");
}

显示结果:

opencv1:带滚动条的图片二值化处理_滑动条

完整opencv实现

#include <opencv2/opencv.hpp>  

using namespace cv;
using namespace std;

IplImage* in = NULL;
IplImage* out = NULL;
IplImage* g_GrayImage = NULL;
const char *InputTitle = "Input Image";
const char *OutputTitle = "Output Image";

void on_trackbar(int pos)
{
// 转为二值图
cvThreshold(g_GrayImage, out, pos, 255, CV_THRESH_BINARY);
// 显示二值图
cvShowImage(OutputTitle, out);
}

int main(int argc, char** argv){
cvNamedWindow(InputTitle, CV_WINDOW_AUTOSIZE);
cvNamedWindow(OutputTitle, CV_WINDOW_AUTOSIZE);

in = cvLoadImage("image2.jpg");

// 转为灰度图
g_GrayImage = cvCreateImage(cvGetSize(in), IPL_DEPTH_8U, 1);
cvCvtColor(in, g_GrayImage, CV_BGR2GRAY);

// 创建二值图
out = cvCreateImage(cvGetSize(g_GrayImage), IPL_DEPTH_8U, 1);

// 滑动条
int nThreshold = 0;
cvCreateTrackbar("二值图阈值", OutputTitle, &nThreshold, 255, on_trackbar);

cvShowImage(InputTitle, in);
cvShowImage(OutputTitle, out);
cvWaitKey(0);
cvReleaseImage(&in);
cvReleaseImage(&out);
cvDestroyWindow(InputTitle);
cvDestroyWindow(OutputTitle);

return 0;
}

显示结果:

opencv1:带滚动条的图片二值化处理_#include_02


举报

相关推荐

0 条评论