==============================================
版權所有:小熊不去實驗室CSDN博客
==============================================
載入選區就是在圖像中選取高亮的部分
R=min(127.5,avg)
if(pix[x,y]>R)
dst[x,y]=255;
else
dst[x,y]=255;
#include <math.h>
#include <opencv/cv.h>
#include <opencv/highgui.h>
using namespace cv;
using namespace std;
int R=11;
int main()
{
Mat src = imread("D:/img/arrow03.jpg",1);
imshow("src",src);
int width=src.cols;
int heigh=src.rows;
Mat img(heigh/2,width/2,CV_8UC3);
resize(src,img,img.size());
Scalar avg=mean(src);
Mat dst(img.size(),CV_8UC3);
Mat mask1u[3];
float avg0 = avg[0]*2>127.5 ? 127.5:avg[0]*2;
float avg1 = avg[1]*2>127.5 ? 127.5:avg[1]*2;
float avg2 = avg[2]*2>127.5 ? 127.5:avg[2]*2;
float tmp,r;
for (int y=0;y<heigh/2;y++)
{
uchar* imgP=img.ptr<uchar>(y);
uchar* dstP=dst.ptr<uchar>(y);
for (int x=0;x<width/2;x++)
{
r = (float)imgP[3*x];
if(r>avg0)
tmp = 255;
else
tmp = 0;
dstP[3*x]=(uchar)(tmp);
r = (float)imgP[3*x+1];
if(r>avg1)
tmp = 255;
else
tmp = 0;
dstP[3*x+1]=(uchar)(tmp);
r = (float)imgP[3*x+2];
if(r>avg2)
tmp = 255;
else
tmp = 0;
dstP[3*x+2]=(uchar)(tmp);
}
}
imshow("載入選區",dst);
split(dst,mask1u);
imshow("藍通道選區",mask1u[0]);
imshow("綠通道選區",mask1u[1]);
imshow("紅通道選區",mask1u[2]);
waitKey();
//imwrite("D:/img/強光.jpg",dst);
imwrite("D:/img/藍通道選區.jpg",mask1u[0]);
imwrite("D:/img/藍通道選區.jpg",mask1u[1]);
imwrite("D:/img/藍通道選區.jpg",mask1u[2]);
}
原圖:
載入選區:
紅通道: 綠通道:
藍通道: