OpenCV中C++関数imreadで画像を読み込む問題

3321 ワード

http://www.cnblogs.com/eyeszjwang/articles/2418354.html
#include "stdafx.h"

#include 
#include 


#include 
#include 
#include 

using namespace cv;

Mat src, dst, tmp;
char* window_name = "Pyramids Demo";

int _tmain(int argc, _TCHAR* argv[])
{
    printf("
Zoom In-Out demo
"); printf("--------------------
"); printf("*[u]-> Zoom in
"); printf("*[d]-> Zoom out
"); printf("*[ESC]-> Close program

"); src = imread("D:\\fruits.jpg"); if(!src.data) { printf("No data!--Exiting the program
"); return -1; } tmp = src; dst = tmp; namedWindow(window_name,CV_WINDOW_AUTOSIZE); imshow(window_name,dst); while(true) { int c; c = waitKey(10); if((char)c == 27) { break; } if((char)c == 'u') { pyrUp(tmp,dst,Size(tmp.cols * 2,tmp.rows * 2)); printf("** Zoom In:Image x 2
"); } else if((char)c == 'd') { pyrDown(tmp,dst,Size(tmp.cols / 2,tmp.rows / 2)); printf("**Zoom Out:Image / 2
"); } imshow(window_name,dst); tmp = dst; } return 0; }

プログラムは簡単です.Imgprocの2つのC++関数pyrUpとpyrDownを直接呼び出して画像ピラミッドを実現します.プログラムの詳細な説明は参照してください.http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/imgproc/pyramids/pyramids.html.しかし、実現の過程で、imreadは画像データとcv LoadImageを最後まで読み取れないことがわかった.何度も考証したが、確かに在庫関連の問題があった.つまり、Debugモードでは'd'を持つlibを選択し、Releaseモードでは'd'を持たないlibを選択します.実際にOpenCV環境を設定する時、DebugとReleaseのカタログを一緒に入れて、修正するのも面倒くさいです.ですから、この時一番簡単な方法はプログラムの開始に加えます.
#pragma comment(lib,"opencv_highgui231d.lib")
を選択します.実験結果は以下の通りです.
OpenCV中C++函数imread读取图片的问题_第1张图片 (x 2)OpenCV中C++函数imread读取图片的问题_第2张图片(x 1)OpenCV中C++函数imread读取图片的问题_第3张图片(x 0.5)(x 0.25)