1. 程式人生 > >opencv1:帶滾動條的圖片二值化處理

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"
); }

顯示結果:
這裡寫圖片描述

完整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; }

顯示結果:
這裡寫圖片描述