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。