OpenCV使用学习

1、全窗口显示图像

namedWindow("Pattern Window",WINDOW_NORMAL);
setWindowProperty("Pattern Window",CV_WND_PROP_FULLSCREEN,CV_WINDOW_FULLSCREEN);
imshow("Pattern Window", pattern[w]);

在这里插入图片描述
显示后的图像覆盖整块屏幕,自动缩放了图像以适应窗口。

2、代码执行过程中等待按按键继续执行

		/*等待按下按键Esc继续执行*/
		//while(1)
		//{
		//	if(waitKey(30) == 27) //延时30ms,按下esc按键继续进行,并返回键值
		//		break;
		//}
		/*等待按下按键Esc继续执行*/

3、灰度图像像素反转

	int n = 1;
	while (n<=22)
	{
		string str;
		stringstream ss;
		ss << n;
		ss >> str;
		ImgName = str;
		ImgName = "grayimage\\" + ImgName + ".jpg";
		Mat srcImage = imread(ImgName, 0);
		for (int i = 0; i < srcImage.rows; i++)
		{
			for (int j = 0; j < srcImage.cols; j++)
			{
				srcImage.at<uchar>(i, j)= 255-srcImage.at<uchar>(i, j);
			}
		}
		imshow("1", srcImage);
		imwrite(ImgName+ "s" +".jpg", srcImage);
		waitKey(500);
		n++;
	}

原图像
在这里插入图片描述
反转图像

在这里插入图片描述
4、fatal error C1083: 无法打开包括文件:“stdafx.h”: No such file or directory

在计算机里搜 stdafx.h
找到后将此头文件所在路径加入到属性包含目录里就行了

5、CV_8U与CV_32F等image type的不同
CV_8U是 unsign 的8位/像素-即一个像素的值在0-255区间,这是大多数图像和视频格式的正常范围。

CV_32F是 float -像素是在0-1.0之间的任意值,这对于一些数据集的计算很有用,但是它必须通过将每个像素乘以255来转换成8位来保存或显示。

使用Mat :: type()找出Mat对象的类型

mat = imread("C:\someimage.jpg");
type = mat.type();

在这里插入图片描述
表头的 C1, C2, C3, C4 指的是通道(Channel)数,比如灰度图像只有 1 个通道,是 C1;JPEG格式 的 RGB 彩色图像就是 3 个通道,是 C3;PNG 格式的彩色图像除了 RGB 3个通道外,还有一个透明度通道,所以是 C4。

猜你喜欢

转载自blog.csdn.net/qq_27353621/article/details/124119338