C++ opencv 滑动条 Trackbary以及处理三通道和单通道图像
#include <opencv2\core.hpp> #include <opencv2\highgui.hpp> #include <opencv2\imgproc.hpp> using namespace cv; const int LowTh_Max = 20; const int HighTh_Max = 100; int g_HighTh, g_LowTh; Mat srcImage; Mat dstImage; void on_Trackbar(int, void*); int main(){ g_HighTh = 80; g_LowTh = 0; srcImage = imread("F:\sfz1.jpg"); if (!srcImage.data){ printf("fail!"); waitKey(0); return false; }; namedWindow("1"); imshow("1", srcImage); createTrackbar("LowTh:20", "1", &g_LowTh, LowTh_Max, on_Trackbar); createTrackbar("HighTh:100", "1", &g_HighTh, HighTh_Max, on_Trackbar); waitKey(0); return 0; } void on_Trackbar(int, void*){ Canny(srcImage, dstImage, g_HighTh, g_LowTh); imshow("1", dstImage); }
1. 定义全局变量及其变量的最大值(const);
2.namedWindow和g_XXX的初始值,createTrackbar,waitKey(0);
3.写on_Trackbar(int, void*), imshow;
处理三通道图像:
void procc(Mat &src, Mat &dst){ for (int Ch = 0; Ch < 3; Ch++){ for (int r = 0; r < src.rows; r++){ for (int c = 0; c < src.cols; c++){ //printf("%d %d %d\n", Ch, r, c); src.at<Vec3b>(r, c)[Ch] = g_sigma; } } } src.copyTo(dst); }
处理单通道图像:
srcImage.ptr<int>[row](col)