opencv 灰度像素读取和写入

版权声明:https://blog.csdn.net/CAIYUNFREEDOM https://blog.csdn.net/CAIYUNFREEDOM/article/details/90112429
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>
#include<iostream>
using namespace cv;
using namespace std;
int main(int argc,char **argv)
{

	int th =0;// atoi(argv[1]);
	Mat m = imread("a.jpg"),d;
		cvtColor(m, m, CV_BGR2GRAY);
	imshow("img",m);
	printf("%d\n",__LINE__);
	m.copyTo(d);
	//cvtColor(d, d, CV_BGR2GRAY);
	Size s = m.size();
	cout<<s<<endl;
		printf("%d\n",__LINE__);
	//imshow("erode img",d);
	int value;
for(th = 100;th<200;th++)
	{
	for(int i=0;i<s.width;i++)
		for(int j = 0;j<s.height;j++)
		{
			value = (int)(m.at<uchar>(j,i));
			if(value<th)
				d.ptr<uchar>(j)[i] = 0;
			//else d.ptr<uchar>(j)[i] = 255;
			//cout<< value <<" ";
		}
char name[200];
sprintf(name,"%d.jpg",th);
imwrite(name,d);
}
			
	cout<<endl;
		
	waitKey(0);
	//imwrite("a.bmp",img);

	return 0;
}

RGB

#include <opencv2/opencv.hpp>
#include <iostream>
#include <fstream>
using namespace cv;
using namespace std;

//点击鼠标返回相应坐标位置并存到txtpoints2文件中
#define WINDOW "sou4rce image"
Mat src;
void On_mouse(int event, int x, int y, int flags, void*);
Point recent_Point;
ofstream file("point2.txt", ios::out | ios::binary);
int main()
{
	 int sz[3] = {2,2,2};
	 int i,j,k,m=0,n=0;

	 Mat L(4096, 4096, CV_8UC3, Scalar(0, 0,255));
    Scalar s;

	 for(i=0;i<255;i++)
	 {
		 for(j=0;j<256;j++)
			 for(k=0;k<256;k++)
			 {
				 if(i==255)
					 cout<<m<<","<<n<<'('<<i<<','<<j<<','<<k<<')'<<endl;
				 L.at<Vec3b>(m,n)=Vec3b(i, j, k);

				 n++;
				 if(n==4096){n=0;m++;}
			 }
		// cout<<i<<endl;
	 }
	  L.copyTo(src);
      cout<<L.size()<<endl;
    //src = imread("/home/q/eclipse-workspace/myfcv/Debug/000000.jpg");
    namedWindow(WINDOW, WINDOW_NORMAL);
   // setMouseCallback(WINDOW, On_mouse);
    //while (1)
    imshow(WINDOW, L);//点击的开始
    waitKey(0);
    file.close();
    return 0;
}
void On_mouse(int event, int x, int y, int flags, void*)//每次点击左键,将将当前点坐标存储到txt文件中,并在相应位置画红点
{

    if (event == EVENT_LBUTTONDOWN  || event == EVENT_MOUSEMOVE)
    {
        recent_Point = Point(x, y);
        file << recent_Point.x << " " << recent_Point.y<<" ";
        circle(src, recent_Point, 3, Scalar(25, 0, 0), -1);
        imshow(WINDOW, src);
		//printf("%d,%d\n",x,y);

    }

}

猜你喜欢

转载自blog.csdn.net/CAIYUNFREEDOM/article/details/90112429